Python的新功能:将字符串替换为其在行中的位置

Python的新功能:将字符串替换为其在行中的位置,python,replace,Python,Replace,假设我有一个文件,有三行这样的结构: foo Black sheep: 500 bar 我想做的是一次迭代,将“害群之马:500”更改为600、700等等,以取代旧的。我可以通过搜索和替换想到一种方法,但我正在寻找一种更优雅的方法,替换行中的某个位置(这里是位置3) 例如,在awk/shellscripting中,其工作原理如下: cat filename | awk '$1 ~ /Black:/ { print ($1, $2, 600); next }; { print $0 }' aw

假设我有一个文件,有三行这样的结构:

foo
Black sheep: 500
bar
我想做的是一次迭代,将“害群之马:500”更改为600、700等等,以取代旧的。我可以通过搜索和替换想到一种方法,但我正在寻找一种更优雅的方法,替换行中的某个位置(这里是位置3)

例如,在awk/shellscripting中,其工作原理如下:

cat filename | awk '$1 ~ /Black:/ { print ($1, $2, 600); next }; { print $0 }'
awk在文件中查找“Black”,并打印单词1、2和600以及文件的其余部分

Python中有类似的东西吗


谢谢你

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


因为这基本上就是awk所做的,在空白处分割。

您能添加更多示例输入和您希望从中获得的输出吗?还不完全清楚500和600之间有什么关系?与StartWith的一个小区别是,如果在“黑色”之前有空格,StartWith将无法找到它。与
awk'$1~/Black://
,@user131527:情况并非如此,拆分行会更准确,但大多数情况下并不需要。否则也可以应用
lstrip()
。谢谢,这很有效。为了我的目的,我把它延长了一点。
>>> 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
>>> 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