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

时间:2019-05-06 12:41:37

标签: python string dictionary type-conversion

我有一个文本文件(applications.txt),其中包含以下格式的n行数据(带有2个定界符)。

1)mytvScreen | mytvScreen | Mi TV,MíTV,My TV,TV
2)watchNextScreen | watchNextScreen | Seguir viendo,Mi TV Seguir viendo
3)recordingsScreen | recordingsScreen | Grabaciones,Mis Grabaciones,Mi TV

注意:1,2,3只是行号,仅供参考。原始文件不包含数字。

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

例如:

下面的第一行应按以下预期的那样转换成字典。 1)mytvScreen | mytvScreen | Mi TV,MíTV,My TV,TV

预期格式:

mytvScreen:Mi TV,MíTV,My TV,TV

此外,在给出任何用逗号分隔的值时,它应该在colan之前返回该值。

例如:

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

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

但是不确定如何将每一行转换成字典。

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

我们非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该在字典中添加项目,方法之一如下。

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)

答案 1 :(得分:0)

我建立了一个模仿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='|')

最后一部分只是对dict的理解:

>>> {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'}