Новое в Python: замена строки по ее положению в строке - PullRequest
0 голосов
/ 30 сентября 2010

Допустим, я получил файл с тремя строками этой структуры:

foo
Black sheep: 500
bar

То, что я хотел бы сделать, это итерация, чтобы изменить «Черная овца: 500» на 600, 700 и так далее, заменив старую. Я могу придумать способ сделать это с помощью поиска и замены, но я ищу более элегантный способ, заменив определенную позицию (здесь поз.3) в строке.

Например, в awk / shellscripting это работает так:

cat filename | awk '$1 ~ /Black:/ { print ($1, $2, 600); next }; { print $0 }'

awk ищет «черный» в файле и печатает слова номер один, номер два и 600, а также остальную часть файла.

Есть ли что-то похожее в Python?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2010
>>> for line in open("file"):
...     sl=line.split()
...     if "Black" in sl[0] :
...         sl[2]="600"
...         line=' '.join(sl)
...     print line.rstrip()
...
foo
Black sheep: 600
bar
0 голосов
/ 30 сентября 2010

Мы можем просто имитировать поведение awk в нескольких строках:)

for line in lines:
    if line.startswith('Black'):
        line_parts = line.split()
        print line_parts[0], line_parts[1], 600
    else:
        print line

Потому что это в основном то, что делает awk, разбить на пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...