如何在python中读取文件内容并将其转换为字典

2024-04-29 01:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件(applications.txt)包含n行数据(带2个分隔符),格式如下

1)mytvScreen | mytvScreen | Mi TV,米í 电视,我的电视,电视
2) watchNextScreen | watchNextScreen | Seguir viendo,密歇根州电视台Seguir viendo
3) 录制屏幕|录制屏幕| Grabaciones,Mis Grabaciones,Mi TV

注:1、2、3仅为参考行号。原始文件不包含数字

我正在尝试编写一个函数,该函数将读取每一行,并使用第一个分隔符之前的值和第二个分隔符之后的值将其转换为字典,如下所示

例如:

下面的一行应该按照下面的预期转换成字典。 1) 我的电视屏幕|我的电视屏幕|米电视,米í 电视,我的电视,电视

预期格式:

mytv屏幕:Mi TV,Mí 电视,我的电视,电视

另外,在给出任何逗号分隔的值时,它应该返回colan前面的值

例如:

当给定值Mi TV时,它应该返回mytvScreen,或者对于其他逗号分隔的值,它也应该返回mytvScreen

我能够读取文件并按预期打印值

但我不知道怎样才能把每一行都译成字典

with open('applications.txt') as f:
                for line in f:
                        details=line.split("|",2)
                        print (details[0] + ' : '+ details[2])

非常感谢你的帮助


Tags: txt字典屏幕格式tvdetails电视mi
2条回答

您应该将条目添加到字典中,下面给出了其中一种方法

s_dict= dict()
with open('applications.txt') as f:
      for line in f:
          details=line.split("|",2)
          print (details[0] + ' : '+ details[2])
          s_dict[details[0]]  = details[2]
      print (s_dict)

我构建一个文件对象来模拟applications.txt内容:

>>> import io
>>> f = io.StringIO("""mytvScreen|mytvScreen|Mi TV,Mí TV, My Tv, TV
... watchNextScreen|watchNextScreen|Seguir viendo,Mi TV Seguir viendo
... recordingsScreen|recordingsScreen|Grabaciones,Mis Grabaciones,Mi TV""")

您的文件显然是一个csv文件,因此您应该使用csv模块来解析它:

>>> import csv
>>> reader = csv.reader(f, delimiter='|')

最后一部分只是一个听写理解:

>>> {row[0]: row[2] for row in reader}
{'mytvScreen': 'Mi TV,Mí TV, My Tv, TV', 'watchNextScreen': 'Seguir viendo,Mi TV Seguir viendo', 'recordingsScreen': 'Grabaciones,Mis Grabaciones,Mi TV'}

相关问题 更多 >