python - 从文件中分离英文文本和非英文文本
问题描述
我有一个 .csv 文件,我想将非英语文本和英语文本分隔在两个不同的文件中。下面是代码,我试过了:
import string
def isEnglish(s):
return s.translate(None, string.punctuation).isalnum()
file=open('File1.csv','r',encoding='UTF-8')
outfile1=open('Eng.csv','w', encoding='utf-8')
outfile2=open('Noneng.csv','w', encoding='utf-8')
for line in file.readlines():
r = isEnglish(line)
if r:
outfile1.write(line+"\n")
else:
outfile2.write(line+"\n")
该代码没有产生预期的结果。两个文件中都有重复的英文文本。我附上了一个输出文件的快照。
解决方案
您忽略了提及代码会产生以下结果:
TypeError: translate() takes exactly one argument (2 given)
请您阅读精美手册:https ://docs.python.org/3/library/stdtypes.html#str.translate
该文档提供了一个相当大的提示,您应该调用str.maketrans( ... )
它来创建所需的翻译映射。这将帮助您识别严格为字母数字的输入字符串。
translation_table = str.maketrans('', '', string.punctuation)