分割文字档Python

时间:2018-07-21 10:34:06

标签: python string split

我处理这样的文本文件:

  

第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)。

谢谢! (真的很抱歉,如果以前曾问过这个问题,我已经完成了研究,但是...)

2 个答案:

答案 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])