【问题标题】:Separating English text and non-English Text from a file从文件中分离英文文本和非英文文本
【发布时间】:2019-11-03 15:20:59
【问题描述】:

我有一个 .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")

代码没有产生预期的结果。两个文件中都有重复的英文文本。我附上了一个输出文件的快照。

【问题讨论】:

  • 你能解释一下你所说的非英文文本是什么意思吗?你只想要ASCII? “天真”或“简历”呢?表情符号?
  • 非英语文本是指英语以外的语言。保留拉丁字符和表情符号没有问题。事实上,我想保留表情符号和拉丁字符。
  • 您打算如何区分英语和非英语?这里有哪些语言选项?
  • 我尝试使用 TextBlob 库的 detect_language() ,但它在几行之后引发了错误。然后我尝试了上面的代码。文件中包含日语、葡萄牙语、法语、西班牙语、乌尔都语、泰米尔语和泰卢固语等所有语言
  • Str.translate 不能自动将字符串翻译成不同的人类语言。请阅读该功能的文档,它对您没有任何帮助

标签: python python-3.x nlp


【解决方案1】:

你忽略了代码产生了这个结果:

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)

【讨论】:

  • 这没有传达您希望它传达的内容:“代码没有产生预期的结果。”请告诉我们 (1.) 代码产生了什么结果,以及 (2.) 期望的结果。 stackoverflow.com/help/mcve
  • 两个文件都有英文文本,每个文本在两个文件中都重复了 n 次。当我在记事本++中打开文件时,它显示消息为“文件太大而无法打开”。原因是两个文件中重复了相同的文本。
猜你喜欢
  • 2016-11-07
  • 2015-10-01
  • 2017-11-21
  • 2016-12-27
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
相关资源
最近更新 更多