我处理这样的文本文件:
第01章
Lorem ipsum
阿特尔(Amet)静坐,奉献爱国,塞德(Eed)做临时性骚扰
第02章
consectetur adipiscing
sed做eiusmod tempor
第03章
et dolore magna aliqua。
带有诸如章,章,章等的分隔符以及1或2位数字(第1章或第01章)。
我设法使用.open()和.read()在Python中打开和读取文件
mytext = myfile.read()
现在,我需要分割字符串,以便获取第XX章的文本。
对于第02章,应该是:
consectetur adipiscing
sed做eiusmod tempor
我是Python的新手,我读到了有关正则表达式,匹配,映射或拆分的信息,但是...嗯...
(我正在编写一个Gimp Python-fu插件,所以我使用捆绑在Gimp中的Python版本2.7.15)。
谢谢! (真的很抱歉,如果以前曾问过这个问题,我已经完成了研究,但是...)
答案 0 :(得分:0)
您可以使用正则表达式,如下所示:
import re
#splits on "Chapter " + a sequence of numbers + a newline
#re.IGNORECASE means it will split on "CHAPTER" or "chapter" or "Chapter" etc
split_text = re.split("Chapter [0-9]+\n", mytext, flags=re.IGNORECASE)
print(split_text)
>>> ['', '\nLorem ipsum\n\ndolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt\n\n', '\nconsectetur adipiscing\n\nsed do eiusmod tempor\n\n', '\net dolore magna aliqua.']
您现在可以按split_text
的索引从每个章节中选择文本,例如:
print(split_text[2])
>>>
consectetur adipiscing
sed do eiusmod tempor
答案 1 :(得分:-1)
您可以尝试以下波纹
chapter = [""]
for i in range(1,4):
nb1=text.find("Chapter "+ "%02d" % (i,))
nb2=text.find("Chapter "+ "%02d" % (i+1,))
chapter.append(text[nb1:nb2])
for i in range(1,4):
print(chapter[i])
或带有正则表达式:
import re
chapter = re.split("Chapter [0-4]+\n", text)
for i in range(1,4):
print(chapter[i])