【问题标题】:Insert new line before multiple keywords in text file在文本文件中的多个关键字之前插入新行
【发布时间】:2015-06-19 14:01:43
【问题描述】:

我有以下文字:

“这就是问题所在。从这个文档中提取一些数据。 文本是我正在寻找的。没有真正发生”

我可以在多个关键字之后插入新行:

import fileinput
for line in fileinput.input('text.txt', inplace=1):
    print line,
    if line.startswith(('Extract',  'Text')):
        print ' '

但我找不到在关键字前添加换行符的解决方案。

最终格式应如下所示:

“这就是问题所在。

从该文档中提取一些数据。

文本是我正在寻找的。没有真正发生”

问题是除了关键字之外所有的词都可以改变。我正在寻找编辑包含关键字的任何文本。

感谢您的建议。

【问题讨论】:

标签: python python-2.7


【解决方案1】:

你的意思是:

import fileinput
for line in fileinput.input('text.txt', inplace=1):
    if line.startswith(('Extract',  'Text')):
        print '\n'+line+'\n'    
    else:    
        print line

?

【讨论】:

    【解决方案2】:

    正则表达式子函数会得到你想要的:

    import re
    keywords_regex = r"(Extract )|(Text )"
    line = re.sub(keywords_regex, "\n\1", line) + "\n"
    

    但首先,您必须将输入文本拆分为相应的句子。你可以这样做:

    import re
    lines = text.split(". ")
    
    # replace the removed periods
    lines = [line + "." for line in lines]
    
    keywords_regex = r"(Extract )|(Text )"
    lines = [re.sub(keywords_regex, "\n\1", line) + "\n" for line in lines]
    

    “\1”是正则表达式速记“第一个匹配的组”。

    【讨论】:

    • 感谢您提供替代解决方案。
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2018-05-13
    相关资源
    最近更新 更多