我的代码是这种格式的
#!/usr/bin/python
fout = open("names2", "w")
fin = open("names", "r")
for line in fin:
fout.write(line.replace('Smith','Mr.Smith'))
fout.write(line.replace('Walker','Mr.Walker'))
fout.close()
我的示例文件是
Smith Anderson Clark Wright Mitchell
Johnson Thomas Rodriguez Lopez Perez
Williams Jackson Lewis Hill Roberts
Jones White Lee Scott Turner
Brown Harris Walker Green Phillips
Davis Martin Hall Adams Campbell
Miller Thompson Allen Baker Parker
Wilson Garcia Young Gonzalez Evans
Moore Martinez Hernandez Nelson Edwards
Taylor Robinson King Carter Collins
而不是把史密斯换成史密斯先生和沃克擦肩而过沃克先生,我明白了
Mr.Smith Anderson Clark Wright Mitchell
Smith Anderson Clark Wright Mitchell
Johnson Thomas Rodriguez Lopez Perez
Johnson Thomas Rodriguez Lopez Perez
Williams Jackson Lewis Hill Roberts
Williams Jackson Lewis Hill Roberts
Jones White Lee Scott Turner
Jones White Lee Scott Turner
Brown Harris Walker Green Phillips
Brown Harris Mr.Walker Green Phillips
Davis Martin Hall Adams Campbell
Davis Martin Hall Adams Campbell
Miller Thompson Allen Baker Parker
Miller Thompson Allen Baker Parker
Wilson Garcia Young Gonzalez Evans
Wilson Garcia Young Gonzalez Evans
Moore Martinez Hernandez Nelson Edwards
Moore Martinez Hernandez Nelson Edwards
Taylor Robinson King Carter Collins
Taylor Robinson King Carter Collins
也就是说,对于每个for,文件都会创建一个额外的实例,并且行会被复制,这是我不希望发生的。我知道附近有工作吗?我有python2.4.3。谢谢!你知道吗
快速修复方法是应用链式
str.replace
调用:但请注意,
str.replace
的一个问题是,这也会影响类似于Smithy
的字符串,要处理这种情况,请使用带单词边界的regex,或者先将文件中的每一行转换为列表,然后更改该列表中的项。你知道吗那是因为你写了两遍。你知道吗
将循环更改为:
相关问题 更多 >
编程相关推荐