在Python中从Dictionary中的List中提取String

时间:2017-07-11 17:31:32

标签: python python-2.7 text-parsing

我是新的(一周大的)Python,非常感谢一些帮助。我试图从超过6,000篇新闻文章中提取字符串(日期)。我正在练习一些与我想要使用的新闻文章相同模式的组成文本:

  

Lorem Ipsum Dolor

     

2017年5月21日星期一

     

Lorem ipsum dolor坐下来,精神上的精神。 Nunc fringilla arcu congue metus aliquam mollis。   Mauris nec maximus purus。 Maecenas坐在pretium讲话中。 Praesent sed rhoncus eo。 Duis id commodo orci。   在dignissim lacus的Quisque。

  

Lorem Ipsum Dolor

     

2017年7月21日星期一

     

Lorem ipsum dolor坐下来,精神上的精神。 Nunc fringilla arcu congue metus aliquam mollis。   Mauris nec maximus purus。 Maecenas坐在pretium讲话中。 Praesent sed rhoncus eo。 Duis id commodo orci。   在dignissim lacus的Quisque。

我知道这些日期与所有.txt文件位于同一位置。它们落在每篇文章标题和下一个换行符(\ n)之后的换行符(\ n)之间。

到目前为止,我已设法使用以下代码创建字典:

base_dir = 'C:/Users/Lorem/text'
output = {}
file_list = []

for (dirpath, dirnames, filenames) in os.walk(base_dir):
for f in filenames:
    if 'txt' in str(f):
        e = os.path.join(str(dirpath), str(f))
        file_list.append(e)

for f in file_list:
    print f
    txtfile = open(f, 'r')
    output[f] = []
    for line in txtfile:
        if '\n' in line:
            output[f].append(line)
 tabs = []
 for tab in output:
     tabs.append(tab)

输出看起来很好:

output
{'C:/Users/Lorem/text\\lorem.txt': ['Lorem Ipsum Dolor\n','Monday, 5/21/2017\n','\n','Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue metus aliquam mollis.\n','Mauris nec maximus purus. Maecenas sit amet pretium tellus. Praesent sed rhoncus eo. Duis id commodo orci.\n'],'C:/Users/Lorem/text\\lorem2.txt': ['Lorem Ipsum Dolor\n','Monday, 7/21/2017\n','\n','Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue metus aliquam mollis.\n','Mauris nec maximus purus. Maecenas sit amet pretium tellus. Praesent sed rhoncus eo. Duis id commodo orci.\n']}

此时我尝试使用正则表达式从字典中的列表中提取日期:

result = []
for out in output.values():
    if re.search('Dolor\n,(.*)\n', out):
        result.append(out)

但是,正则表达式不适用于列表。我如何从列表中解析出这些日期?理想情况下,我想要一个字典或一些带有文本和日期的数据结构,以便我可以将它移动到R,我工作起来更舒服。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用字典理解进行解析:

output = {'C:/Users/Lorem/text\\lorem.txt': ['Lorem Ipsum Dolor\n','Monday, 5/21/2017\n','\n','Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue metus aliquam mollis.\n','Mauris nec maximus purus. Maecenas sit amet pretium tellus. Praesent sed rhoncus eo. Duis id commodo orci.\n'],'C:/Users/Lorem/text\\lorem2.txt': ['Lorem Ipsum Dolor\n','Monday, 7/21/2017\n','\n','Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue metus aliquam mollis.\n','Mauris nec maximus purus. Maecenas sit amet pretium tellus. Praesent sed rhoncus eo. Duis id commodo orci.\n']}

dates = {a:b[1:3] for a, b in output.items()}

输出:

{'C:/Users/Lorem/text\\lorem2.txt': ['Monday, 7/21/2017\n', '\n'], 'C:/Users/Lorem/text\\lorem.txt': ['Monday, 5/21/2017\n', '\n']}