我试图从多个文本文件中解析某些段落并将它们存储在列表中。所有文本文件都有类似的格式:
MODEL NUMBER: A123
MODEL INFORMATION: some info about the model
DESCRIPTION: This will be a description of the Model. It
could be multiple lines but an empty line at the end of each.
CONCLUSION: Sold a lot really profitable.
现在我可以将信息拉出一行,但遇到多行时会遇到麻烦(例如'描述')。描述长度是未知的,但我知道最后它会有一个空行(这意味着使用' \ n')。这就是我到目前为止所做的:
import os
dir = 'Test'
DESCRIPTION = []
for files in os.listdir(dir):
if files.endswith('.txt'):
with open(dir + '/' + files) as File:
reading = File.readlines()
for num, line in enumerate(reading):
if 'DESCRIPTION:' in line:
Start_line = num
if len(line.strip()) == 0:
我不知道它是否是最佳方法,但我尝试使用if len(line.strip()) == 0:
创建一个空行列表,然后找到比Start_Line
更大的值。我看到了Bisect。
最后,如果我说print Description
['DESCRIPTION: Description from file 1',
'DESCRIPTION: Description from file 2',
'DESCRIPTION: Description from file 3,]
感谢。
答案 0 :(得分:0)
正则表达式。可以这样考虑一下:你有一个模式可以让你把任何文件剪成你会觉得可口的文件:"换行后跟大写字母"
re.split是你的朋友
取一个字符串
"THE
BEST things
in life are
free
IS
YET
TO
COME"
作为字符串:
p = "THE\nBEST things\nin life are\nfree\nIS\nYET\nTO\nCOME"
c = re.split('\n(?=[A-Z])', p)
哪个产生列表c
['THE', 'BEST things\nin life are\nfree', 'IS', 'YET', 'TO', 'COME']
我认为你可以从那里拿走它,因为这会将你的文件分成每个字符串列表,每个字符串都有自己的部分,然后从那里你可以找到" DESCRIPTION"元素并存储它,您会看到您将每个部分分开,包括其重新分割的子内容。重要的是要注意我设置正则表达式的方式,它识别PATTERN"换行符,然后是大写字母"但是换行后的CUTS,这就是为什么它在括号之外。