【问题标题】:lines with 25+ words split when the first comma appears [closed]当第一个逗号出现时,包含 25 个以上单词的行会被拆分 [关闭]
【发布时间】:2019-10-04 14:25:47
【问题描述】:

我有一个文本文件,其中超过 25 个单词的行应该被分解:

确切地说,我希望代码执行以下操作:

1) 计算每行中的单词数(单词定义为由空格字符分隔的任何内容......所以像“sample-word.”这样的东西仍然被认为是一个单词)。如果字数小于或等于 25,则直接返回该行。

2) 如果为 false(大于 25),则从左到右搜索该行的第一个逗号字符,然后在逗号后立即拆分。

示例:

line1: phrase from a test line, which I want to split, and I don't know how. 

到

line1: phrase from a test line,
line2: which I want to split, and I don't know how.

3) 如果没有找到逗号字符,则从左到右搜索第一个“和”(包括 and 之后的空格,因此它不会像 android 那样拆分单词)和在 "and " 之前立即拆分(与拆分之后的位置不同)。

例子

line1: phrase from a long sentence and I want to split

到

line1: phrase from a long sentence
line2: and I want to split

5)如果没有找到“and”,则在 25 个单词之后将行拆分(这是上面链接中的其他解决方案可以做的)。

6) 将代码从 1-5 循环运行 7 次,因为即使在一行被打断之后,剩余的行仍然可以有超过 25 个单词。代码不需要高效或优雅,所以我认为循环是最简单的编码方式。

7) 保存到 ouput.txt 文件。

请注意,我只希望对超过 25 个单词的行进行上述分隔...分隔每个逗号、冒号、分号和“和”字不是我所需要的。

提前非常感谢您。

【问题讨论】:

    标签: python linux bash text split


    【解决方案1】:

    无需重新发明轮子。你想要fold 命令:

    fold -s -w25 file 
    

    演示:

    fold -s -w25 <<END
    123456789.123456789.123456789.
    phrase from a test line, which I want to split, and I don't know how.
    END
    
    123456789.123456789.12345
    6789.
    phrase from a test line,
    which I want to split,
    and I don't know how.
    

    【讨论】:

    • 嗨格伦杰克曼,谢谢。这更接近我的需要,类似于我的链接中的建议。但是,在此之前,我希望这些行用逗号、冒号和分号分隔(按照我的问题中提到的顺序)。您的解决方案是最后一步。代码是什么?我没有编码背景,是个新手。
    猜你喜欢
    • 2021-10-04
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2017-02-05
    相关资源
    最近更新 更多