将文本文件读入Python的词典列表中 [英] Read text file into a list of dictionaries in Python

查看:48
本文介绍了将文本文件读入Python的词典列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜索了一段时间,但是还没有找到足够简单的答案.

I have searched for a while but haven't seen a simple enough answer to this.

我有一个已经非常结构化的txt文件,其中包含很多这样的元素:

I have an already very structured txt file with a lot of elements like this:

product/productId: B000GKXY4S
review/userId: A1QA985ULVCQOB
review/profileName: Carleen M. Amadio "Lady Dragonfly"
review/helpfulness: 2/2
review/score: 5.0
review/time: 1314057600
review/summary: Fun for adults too!
review/text: I really enjoy these scissors for my inspiration books that I am making (like collage, but in books) and using these different textures these give is just wonderful, makes a great statement with the pictures and sayings. Want more, perfect for any need you have even for gifts as well. Pretty cool!

product/productId: B000GKXY4S
review/userId: ALCX2ELNHLQA7
review/profileName: Barbara
review/helpfulness: 0/0
review/score: 5.0
review/time: 1328659200
review/summary: Making the cut!
review/text: Looked all over in art supply and other stores for "crazy cutting" scissors for my 4-year old grandson.  These are exactly what I was looking for - fun, very well made, metal rather than plastic blades (so they actually do a good job of cutting paper), safe ("blunt") ends, etc.  (These really are for age 4 and up, not younger.)  Very high quality.  Very pleased with the product.

product/productId: B000140KIW
review/userId: A2M2M4R1KG5WOL
review/profileName: L. Heminway
review/helpfulness: 1/1
review/score: 5.0
review/time: 1156636800
review/summary: Fiskars Softouch Multi-Purpose Scissors, 10"
review/text: These are the BEST scissors I have ever owned.  I am left-handed and take note that either a left or right-handed person can use these equally well.               If you have arthritis, as I do, these scissors are amazing as well.  Well worth the price.  I now own three pairs of these and have convinced many other people in my quilting group that they NEED a pair as well!             They cut through muli layers and difficult to cut items really well.            Do buy them, you won't regret it!

这将是一本词典,我想要一个这样的词典列表.最简单的方法是什么?我尝试了 csv ,但似乎不正确:

This would be one dictionary and I want a list of dictionaries like this. What is the simplest way to do it? I tried csv but it seems not correct:

field = ("product/productId", "review/userId", "review/profileName", "review/helpfulness",
              "review/score","review/time", "review/summary", "review/text")

reader = csv.DictReader(open('../Arts.txt'), fieldnames=field)

有人可以帮助我解决这个新手问题吗?谢谢!

Could someone help me on this novice problem? Thanks!

推荐答案

在这种情况下,您只想读取每一行,在:上拆分以获取键和值,然后添加该对到当前字典.由于文件结构合理,因此您只需按字段名称检测新块何时开始:

In this case you just want to read each line, split on : to get the key and value, and then add that pair to the current dictionary. Since your file is well-structured you can just detect when a new block starts by the field name:

data = []
current = {}
with open('../Arts.txt') as f:
    for line in f:
        pair = line.split(': ', 1)
        if len(pair) == 2:
            if pair[0] == 'product/productId' and current:
                # start of a new block
                data.append(current)
                current = {}
            current[pair[0]] = pair[1]
    if current:
        data.append(current)

如果文件包含多列,则可以使用csv,例如,具有相同数据的csv文件可能类似于以下内容:

You would use csv if you had a file with multiple columns, for example a csv file with your same data might look something like the following:

product/productId,review/userId,review/profileName,...
B000GKXY4S,A1QA985ULVCQOB,Carleen M. Amadio "Lady Dragonfly",...
B000GKXY4S,ALCX2ELNHLQA7,Barbara,...

这篇关于将文本文件读入Python的词典列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆