Привет, ребята, я хотел бы спросить, как сохранить специальный алфавит / символ в текстовом файле, используя Python?

Входной текстовый файл:

abcÃ/cdéf@-www

Я хочу удалить символ, но остаюсь алфавитом и специальным алфавитом, символ означает ~! @ # $% ^ * () _ + {} <>: "| И т. Д. После того, как я попытался запустить свой код для этого, вот что я получил:

Выходной текстовый файл:

abc  cd f  www

Символы были удалены и заменены пробелом, что я хочу, но специальные алфавиты были удалены и заменены пробелом, который я не хочу. Есть ли способ удалить символы, но оставить только специальные алфавиты?

Ожидаемый выходной текстовый файл:

abcà cdéf  www

Вот мой код:

string = open('abc.txt', encoding='utf-8').read()
new_str = re.sub('[^a-zA-Z0-9\n\.]', ' ', string)
open('abc.txt', 'w', encoding='utf-8').write(new_str)

Любая помощь будет оценена, спасибо!

0
Edison Toh 4 Июл 2019 в 11:44

3 ответа

Лучший ответ

Замените вторую строку на:

new_str = re.sub('[^\w\s.,;]', ' ', string)
1
Jānis Š. 4 Июл 2019 в 09:48

Вы можете попробовать это:

import re
string = open('abc.txt', encoding='utf-8').read()
new_str = re.sub('[/~!@#$%^*()_+{}<>:"|-]', ' ', string) # put your characters to replace here
open('abc.txt', 'w', encoding='utf-8').write(new_str)

Вывод:

abcà cdéf  www
0
Amit Nanaware 4 Июл 2019 в 08:54

Вы можете указать, чтобы удалить только специальные символы / знаки препинания

puncts = re.escape(string.punctuation)
print re.sub(r'['+ puncts +']', '', your_string)
0
mnestorov 4 Июл 2019 в 08:52