如何使用Python使用Unicode编码在* .txt文件中查找和替换字符串?

时间:2019-03-24 14:43:59

标签: python unicode encoding

我正在尝试使用同一文件夹中所有* .txt文件中的用户输入字符串替换“ FullName”。 * .txt文件似乎是Unicode(当我单击“文件”->“另存为”时显示为Unicode)。

每次我运行代码时,它都会用一些错误的符号(例如,许多਍ഀ਍ഀ和਍ഀ਍䘀甀氀氀一愀洀攀ഀ਍䨀漀恋伥漀猀)替换“ FullName”碗琀碗漀渀ഀ਍䐀㨀ꀀ㌀ꀀ㠀㠀)。

当我制作一个随机的* .txt文件并将其保存为ANSI或将任何原始文件保存为ANSI时,替换就可以了。

有人可以帮助我了解这里出了什么问题吗?

fullName = input('Full Name: ')
import glob

fullName = input('Full Name: ')
for f in glob.glob('*.txt'):
    with open(f, 'r') as inputfile:
        newText = inputfile.read().replace('FullName', fullName)
    with open(f, 'w') as outputfile:
        outputfile.write(newText)

Unicode编码:

Unicode Encoding

更换后的后果

Aftermaths of replacement

1 个答案:

答案 0 :(得分:0)

Windows默认将Unicode保存为UTF-16,因此请尝试使用encoding='utf-16'打开文件:

for f in glob.glob('*.txt'):
    with open(f, 'r', encoding='utf-16') as inputfile:
        newText = inputfile.read().replace('FullName', fullName)
    with open(f, 'w', encoding='utf-16') as outputfile:
        outputfile.write(newText)