【问题标题】:Split lines separated by tab (or spaces) in a file拆分文件中由制表符(或空格)分隔的行
【发布时间】:2019-03-12 15:18:00
【问题描述】:

我有一个大文件(europarl corpus),每一行都包含一个英文和德文句子

Es gab Tote.    They killed people.
Ich stimme Herrn Mayer in allem zu.     I agree with everything Mr Mayer has said.

以上是两个示例行。 我只需要为每一行分隔每种语言的句子

如您所见,句子之间由一个小空格(我认为是制表符?)分隔,由多个空格组成,问题是空格数通过文件不一致。

另外,有时英文版完全不见了

【问题讨论】:

    标签: python-3.x csv tabs nlp whitespace


    【解决方案1】:

    使用re 包根据>1 个空格(或\t 字符)分割每一行:

    sentences = re.split('  +|\t', 'Es gab Tote.\tThey killed people.')
    # ['Es gab Tote.', 'They killed people.']
    sentences = re.split('  +|\t', 'Es gab Tote.   They killed people.')
    # ['Es gab Tote.', 'They killed people.']
    
    # Make sure to strip away any additional whitespace
    sentences = [sentence.strip() for sentence in sentences]
    

    使用上述正则表达式拆分后,请确保对返回的每个字符串使用.strip() 函数以删除任何额外的空格。

    【讨论】:

    • 我应该说但是“。”不是在每一行或每一个句子上,我只需要在有空格的“中间”取一行分割
    • 刚刚编辑了我的答案!检查一下,如果可行,请告诉我!
    • 你的答案在大多数情况下是正确的,但是有些句子没有正确拆分,我仍然不知道为什么,我会发布我使用 bash 命令给我的答案
    • 不用担心,您的 Bash 解决方案更简单,也应该更快!祝你好运
    【解决方案2】:

    我使用了非 python 解决方案,只在 linux shell 中:

    cut -f 1 <name_of_corpus_file> 
    

    返回给我的正是我想要的

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多