Я попытался заменить всю китайскую строку на "#", но, похоже, это не сработало
import os,re
path = 'F:\\project\\test'
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
files.append(os.path.join(r, file))
for file in files:
with open(file, 'rb') as infile:
while True:
content = infile.readline()
if re.match(r'(.*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*)', content.decode('utf-8')):
print(content.decode('utf-8'))
content.decode('utf-8').replace(content.decode('utf-8'),"#")
print(content.decode('utf-8'))
я обнаружил, что какой-то код может получить текст на китайском или китайском (например, я понятия не имею)
def find_chinese(str):
pattern = re.compile(r'[^\u4e00-\u9fa5]')
chinese = re.sub(pattern, '', file)
print(chinese)
def find_unchinese(str):
pattern = re.compile(r'[\u4e00-\u9fa5]')
unchinese = re.sub(pattern, "", file)
print(unchinese)
str = "2019年1月3日 - python去除空格和换行符的方法 一、去除空格 strip().strip() # ...用replace('\',''),后边的串替换掉前边的posted @ 2016-07-18 08:53 ..."
# get unchinese
find_unchinese(str)
# get chinese
find_chinese(str)
Я могу заменить английский sh символ, например,
import fileinput,re
filename='F:\\project\\test\\test_script.txt'
with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
for line in file:
#pattern = re.compile(r'[^\u4e00-\u9fa5]')
#chinese = re.sub(pattern, '', str)
print(line.replace('aaaa', '#'), end='')
#print(chinese)
, но если txt-файл содержит китайский символ, например
import fileinput,re
filename='F:\\project\\test\\test_script.txt'
with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
for line in file:
pattern = re.compile(r'[^\u4e00-\u9fa5]')
chinese = re.sub(pattern, '', str)
# print(line.replace('aaaa', '#'), end='')
print(line.replace(chinese, '#'), end='')
, консоль покажет UnicodeDecodeError: 'cp950' код c не может декодировать байт 0xa0 в позиции 2: недопустимая многобайтовая последовательность и текстовый файл будут пустыми