假设我有一个包含这种结构的三行文件:
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中有类似内容吗?
谢谢
答案 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