longzhou520 发表于 2020-12-28 23:33:00

for each_line in f1 为什么会显示 'gbk' 报错

def replace_string(old, new):
    f1 = open(file_name)
    count = 0

    for each_line in f1:
      if old in each_line:
            count += 1

    print('文件%s中共有%s【%s】\n' % (file_name, count, new))
    print('你确定要把所有的【%s】替换为【%s】\n' % (new, old))
    select = input('【YES/NO】:')
    if select == 'YES':
      f2 = open(file_name, 'w')
      f2.replace(old, new, count)
      f2.close()

    f1.close()

file_name = input('请输入文件名:')
old = input('请输入需要替换的单词或字符:')
new = input('请输入新的单词或字符:')
replace_string(old, new,)

jackz007 发表于 2020-12-28 23:44:54

本帖最后由 jackz007 于 2020-12-28 23:48 编辑

      文件编码错误,当前缺省编码 'GBK' 无法解码文件中的中文字符。这个文件中的中文字符应该是采用了 'UTF-8' 的字符编码,打开文件的语句应该加上 encoding 选项。
def replace_string(old, new):
    f1 = open(file_name , encoding = 'UTF-8')    # 修改这一句

bonst 发表于 2020-12-28 23:45:35

说明不是gbk,编码方式可能是utf-8,指定encoding = 'utf-8'
页: [1]
查看完整版本: for each_line in f1 为什么会显示 'gbk' 报错