python:替换文件中的多个单词

时间:2017-09-02 10:04:55

标签: python

我有一个文件apple.py,它有appleApple字样。 还有一个空白文件pear.py

我想阅读apple.py的内容并将其写入pear.py,然后修改
applepearApplePear

我这样做:

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()不起作用。我该怎么办?

2 个答案:

答案 0 :(得分:2)

你将整个read_data写入文件两次。

read_data = read_data.replace('city','beijing')
read_data = read_data.replace('City','Beijing')
f.write(read_data)

答案 1 :(得分:1)

您的代码不起作用的原因是:

  1. 您将整个数据写入文件两次。
  2. str.replace() 返回字符串,替换完成后,不会更改原始字符串。通过做

    f.write(read_data.replace('city', 'beijing'))
    

    第一次,您打印到已替换read_data'city'的文件'beijing',但保存对read_data的更改。第二次你做

    f.write(read_data.replace('City', 'Beijing'))
    

    之前的替换未保存,因此导致替换原始字符串。

  3. 话虽如此,您有两种选择:

    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)