使用不可订阅的对象创建文本文件

时间:2016-01-29 10:42:26

标签: python

我想在Python中使用NON可订阅对象创建一个文本文件,我不知道如何继续。我想提取列表的每个月,并为每个月创建一个单独的行。以下是非可订阅对象列表和错误的示例:

enter image description here

我使用的代码如下:

months=['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'Novemeber', 'December']

for i in range(len(sections)): 

    if (' tax ' in sections[i]
    or ' Tax ' in sections[i]
    or ' policy ' in sections[i]
    or ' Policy ' in sections[i]):

        pat=re.compile("|".join([r"\b{}\b".format(m) for m in months]), re.M)
        month = pat.search("\n".join(sections[i].splitlines()[0:6]))
        print(month)

outfile = open('H:/Uncertainty_Data/A_2005_Months.txt', 'w')
outfile.writelines(month['match'])
outfile.close

任何帮助都非常感谢!

干杯,

1 个答案:

答案 0 :(得分:1)

month是一个正则表达式匹配对象,如果您想访问与之匹配的文本,则无法将其编入索引(它不是可迭代的)。

您想要使用

outfile.write(month.group(0))

虽然(因为你在循环之外这样做)只能写出匹配的最后一个月。如果要收集所有匹配项并将其写入文件,请执行类似

的操作
outputs = []
pat = re.compile("|".join([r"\b{}\b".format(m) for m in months]), re.M)

for section in sections: 
    if any(item in section for item in (' tax ', ' Tax ', ' policy ', ' Policy ')):
        month = pat.search("\n".join(section.splitlines()[0:6]))
        outputs.append(month.group(0))

with open('H:/Uncertainty_Data/A_2005_Months.txt', 'w') as outfile:
    outfile.writelines(outputs)