我有一个txt文件,我想在字典中转换。txt的每个文件都由四个用分号分隔的str组成。每个str都是字典的值。我尝试了下面的代码,但我不知道如何继续。
text=“1;迈克;棕色;73/04/01; 2;安娜;史密斯;71/02/01"
文件=打开(“people.txt”,“w”)
文件写入(tex)
file.close()file=open>(“people.txt”,“r”)
text=file.read()
文件.close()
list=>text.split(“;”)keys=['id','name','family name','birth']
预期:
id: 1
name: Mikael
family name: Brown
Birth: 73/04/01
id: 2
name: Anna
family name: Smith
Birth: 71/02/01
谢谢
4条答案
按热度按时间cclgggtu1#
使用csv和dictreader
t、 文本
脚本
输出
oo7oh9g92#
将整个文件作为一个字符串,然后用分号将其拆分,因为我们知道要按4进行,所以我们创建了一个for循环,每次跳4。然后我有一个dictlst数组,我每4步就添加一个
mkshixfv3#
这可能有点离题,但是
如果“;”界定记录,以及
";" 然后划分字段
这样,除了文件i/o之外,还会产生您想要的输出:
或者,如果你更喜欢互动式的列表/听写理解方法:
jtjikinw4#
我继续假设您可以将每个字典键与文本文件中所有行的匹配列表相关联。
我的意思是如果
personal_data
那么你的字典就会有以下内容:下面是根据需要构建dict的代码。我将省略任何处理不正确格式的代码,并假设每个条目都具有相同顺序的键,并且文本文件中的值组不包含空格。
在我的python 3.9.2安装中,我得到:
如果可能的话,我认为修改文本文件的布局以使其更易于修改确实会让您受益匪浅。即,将每个人的条目跨行拆分。而不是:
你可以:
这样做的主要动机是它可以更容易地处理那些可能有空格的值,比如“maria jos”é", "莎拉·林恩,“德拉·克鲁兹”。一般来说,构建能够处理名称的软件是相当棘手的。
正如您可能注意到的,这样的数据非常适合表格格式,就像您在电子表格中看到的那样。也许把它放在pandas.dataframe对象中会有好处?该链接将带您访问他们文档中的教程,这将帮助您确定该教程是否有用。