繁体   English   中英

Python的新功能:通过在行中的位置替换字符串

[英]New to Python: Replacing a string by its position in a line

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

foo
Black sheep: 500
bar

我想做的是将“ Black Sheep:500”更改为600、700等的迭代,以替换旧的。 我可以想到一种通过search&replace进行操作的方法,但是我正在寻找一种更优雅的方法,方法是替换行中的某个位置(此处为pos.3)。

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

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

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

Python中有类似的东西吗?

谢谢

我们可以简单地模仿两行的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所做的,在空白处分割。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM