Python 从文件中分离英文文本和非英文文本
我有一个.csv文件,我想在两个不同的文件中分离非英语文本和英语文本。下面是我尝试过的代码:Python 从文件中分离英文文本和非英文文本,python,python-3.x,nlp,Python,Python 3.x,Nlp,我有一个.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=
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)
请您阅读精美手册:
文档提供了一个很大的提示
您应该调用str.maketrans(…)
创建所需的翻译映射。
这将帮助您识别以下输入字符串:
严格的字母数字
translation_table = str.maketrans('', '', string.punctuation)
你能澄清你所说的非英语文本是什么意思吗?你只想要ASCII码?那“天真”或“恢复”呢?表情符号?非英语文本指英语以外的语言。保留拉丁字符和表情没有问题。事实上,我想保留表情符号和拉丁字符。你打算如何区分英语和非英语?这里的选项是什么语言?我试图使用TextBlob库的detect_language(),但几行之后就出现了错误。然后我尝试了上面的代码。文件中包含所有语言,如日语、葡萄牙语、法语、西班牙语、乌尔都语、泰米尔语和泰卢固语。translate不用于自动将字符串翻译成其他人类语言。请阅读该函数的文档,它在这里对您毫无帮助。该函数没有传达您希望它传达的内容:“代码没有产生期望的结果。”请告诉我们(1.)代码产生了什么结果,以及(2.)期望的结果。两个文件都有英文文本,每个文本在两个文件中重复n次。当我在notepad++中打开文件时,它会显示“文件太大,无法打开”的消息。原因是两个文件中重复了相同的文本。