Как найти и заменить строки в файле * .txt кодировкой Unicode, используя Python? - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь заменить «FullName» на строку ввода пользователя во всех файлах * .txt в одной и той же папке.Файлы * .txt выглядят как Unicode (отображается Unicode, когда я нажимаю File -> Save as).

Каждый раз, когда я запускаю код, он заменяет «FullName» некоторыми неправильными символами (например, много* И 1003 *

Когда я сделал, я сделалслучайный * .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 голосов
/ 24 марта 2019

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)
...