Python新手:用一行中的位置替换字符串

时间:2010-09-30 14:30:18

标签: python replace

假设我有一个包含这种结构的三行文件:

foo
Black sheep: 500
bar

我想要做的是将“黑羊:500”改为600,700等等的迭代,取代旧的。我可以通过搜索和替换来思考一种方法,但我想通过替换该行内的某个位置(此处为pos.3)来寻找更优雅的方法。

例如,在awk / shellscripting中,它的工作方式如下:

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

awk在文件中查找“Black”并打印第一个,第二个和第600个字以及文件的其余部分。

Python中有类似内容吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我们可以简单地模仿几行中的awk行为:)

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

因为这基本上就是gawk所做的,分裂在空白上。

答案 1 :(得分:0)

>>> 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