天天看點

python 3.7 replace函數的坑

使用replace時必須用

str=str.replace(old,new)

如果用 str.replace(old,new)會不起作用。

注意:若str中沒有old變量,也不會報錯

應用:

練習題 —— 全局替換程式:

1.寫一個腳本,允許使用者按以下方式執行時,即可以對指定檔案内容進行全局替換

    python your_script.py old_str new_str filename

2.替換完畢後列印替換了多少處内容

# @Time     :2019/6/8 20:57

'''
練習題1 —— 全局替換程式:
1.寫一個腳本,允許使用者按以下方式執行時,即可以對指定檔案内容進行全局替換
    python your_script.py old_str new_str filename
2.替換完畢後列印替換了多少處内容
'''

import os
import sys

my_sys = sys.argv  # 接收輸入的參數
if len(my_sys) != 4:
    print("Wrong inputing!")
    os._exit(0)
else:
    print("Replacing....")

old_str = str(my_sys[1])
new_str = str(my_sys[2])
filename = my_sys[3]
new_file = filename + "_new"

count = 0
with open(filename, mode='r', encoding='utf-8') as f:
    data = f.read()
    if old_str in data:
        data = data.split("\n")  # 用\n分割字元串輸出為清單

        f_new = open(new_file, mode='w', encoding='utf-8')  # 建立了文本疊代器

        for i in data:
            if old_str in i:
                count += 1
            i = i.replace(old_str, new_str)

            f_new.write(i + "\n")  # 寫入檔案
        f_new.close()

if count > 0:
    if os.path.exists(filename):
        os.remove(filename)
    os.replace(new_file, filename)
    print("替換成功,替換了{0}處".format(count))
else:
    print("{0}檔案中沒有{1}".format(filename, old_str))