将文本文件读入Python的词典列表中 [英] Read text file into a list of dictionaries in 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屋!