我有一个文件apple.py
,它有apple
和Apple
字样。
还有一个空白文件pear.py
。
我想阅读apple.py
的内容并将其写入pear.py
,然后修改
apple
到pear
,
Apple
至Pear
。
我这样做:
def modify_city():
with open('city.py', 'r+') as f:
read_data = f.read()
with open('beijing', 'w') as f:
f.write(read_data.replace('city', 'beijing')) #it works
f.write(read_data.replace('City', 'Beijing')) #it doesn't work
问题:
在代码中,第一个replace()
有效,但第二个replace()
不起作用。我该怎么办?
答案 0 :(得分:2)
你将整个read_data写入文件两次。
read_data = read_data.replace('city','beijing')
read_data = read_data.replace('City','Beijing')
f.write(read_data)
答案 1 :(得分:1)
您的代码不起作用的原因是:
str.replace()
返回字符串,替换完成后,不会更改原始字符串。通过做
f.write(read_data.replace('city', 'beijing'))
第一次,您打印到已替换read_data
和'city'
的文件'beijing'
,但不保存对read_data
的更改。第二次你做
f.write(read_data.replace('City', 'Beijing'))
之前的替换未保存,因此导致替换原始字符串。
话虽如此,您有两种选择:
def modify_city():
with open('city.py', 'r+') as f:
read_data = f.read()
with open('beijing.py', 'w') as f:
f.write(read_data.replace('city', 'beijing').replace('City', 'Beijing'))
或
def modify_city():
with open('city.py', 'r+') as f:
read_data = f.read()
read_data = read_data.replace('city', 'beijing')
read_data = read_data.replace('City', 'Beijing')
with open('beijing.py', 'w') as f:
f.write(read_data)