|
发表于 2022-4-7 18:48:08
|
显示全部楼层
文件编码错误
- import re
- import cchardet
- file_name = input('请输入文件名(E:/1.txt):')
- with open(file_name, 'rb') as f:
- encoding = cchardet.detect(f.read(1024))['encoding']
- def count_line(file_name, new_line):
- with open(file_name, encoding=encoding) as b: # 这里
- message = ''
- for line in b:
- message += line.rstrip()
- c = re.findall(new_line, message) # 这里是指message中所有和new_line相同的一个数组
- count = len(c)
- return count
- def file_replace(file_name, rep_word, new_word):
- with open(file_name, 'r+', encoding=encoding, errors='ignore') as f:
- content = []
- count = count_line(file_name, rep_word)
- for eachline in f:
- if rep_word in eachline:
- eachline = eachline.replace(rep_word, new_word)
- content.append(eachline)
- decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:'
- % (file_name, count, rep_word, rep_word, new_word))
- if decide in ['YES', 'Yes', 'yes']:
- with open(file_name, 'w') as f:
- f.writelines(content)
- rep_word = input('请输入需要替换的单词或字符:')
- new_word = input('请输入新的单词或字符:')
- file_replace(file_name, rep_word, new_word)
复制代码 |
|