我的文件只是一个大字符串。该字符串中的句子以3个数字结尾,如下所示:


  看到老鼠。 1980 1 1绵羊红细胞小鼠1980 6 5看过小鼠1980 8 8


我想更改它,以便文件/输出看起来像这样:


  看到老鼠。 1980年1月1日
  
  绵羊红细胞小鼠1980 6 5
  
  看过鼠标1980 8 8


这是我一直在尝试解决此问题的代码:

with open('ngram_test') as f:
for line in f:
    #print(line)
    for word in line.split():
        print(word)


但是,这仅会打印字符串和换行符中的每个单词。任何帮助将不胜感激!

最佳答案

使用正则表达式,您可以在每个模式出现后添加换行符(\n):

import re
s = "sees mouse . 1980 1 1 sheep erythrocytes mouse 1980 6 5 seen mouse 1980 8 8"
pattern = r"(\d{4}\s\d{1,2}\s\d{1,2})"
for match in re.findall(pattern, s):
    s = re.sub(match, f'{match}\n', s)


输出:

'sees mouse . 1980 1 1\n sheep erythrocytes mouse 1980 6 5\n seen mouse 1980 8 8\n'

08-19 10:57