【问题标题】:Read a text file and form a dictionary in python读取文本文件并在 python 中形成字典
【发布时间】:2017-06-01 14:49:53
【问题描述】:

我有文件 data.txt ,下面的 python 代码读取一个文本和表单字典。

文件:data.txt

10/20   vinay   
05/31   hunachyal
11/23   mine

bday_list = {}


infile = open("data.txt")
for line in infile:
    List_array = [w.strip() for w in line.split("\t")]
    bday_list[List_array[0]] = List_array[1]
#    print line

print bday_list


 Op: {'11/23': 'mine', '10/20': 'vinay', '05/31': 'hunachyal'}

类似地,如何以 OP 中所示的格式获取以下文件的字典

文件

  10/20 Name    vinay   phone   +91094xxx   
  05/31 Name    hunachyal   phone +91jndjxx
  11/23 Name    mine    phone +92jdddxxx

  OP:

  {'11/23': {'Phone': '+91kexxx', 'Name': 'mine'}, '10/20': {'Phone': '+919xxxx', 'Name': 'vinay'}, '05/31': {'Phone': '+9194xxxx', 'Name': 'hunachyal'}}

或者python中有什么方法可以形成数据库,我可以很容易地获取数据。

【问题讨论】:

  • 所有答案都很好:)

标签: python dictionary data-structures


【解决方案1】:

你也可以试试这个

bday_list = {}
with open('data.txt', 'r') as R:
    for line in R:
        l = line.strip().split()  # split the line to list
        bday_list[l[0]] = {k:v for k,v in zip(l[1::2], l[2::2])}

PS,
如果您使用infile = open(...) 而不是with open() as infile: 来处理文件句柄,您应该记住之后使用close 文件句柄。

【讨论】:

    【解决方案2】:

    尝试以下方法:

    >>> data = """10/20 Name    vinay   phone   +91094xxx   
    ...   05/31 Name    hunachyal   phone +91jndjxx
    ...   11/23 Name    mine    phone +92jdddxxx
    ... """
    >>> 
    >>> result = {}
    >>> 
    >>> for line in data.splitlines():
    ...     dataList = line.split()
    ...     result[dataList[0]] = {dataList[1]: dataList[2], dataList[3]: dataList[4]}
    ... 
    >>> result
    {'11/23': {'Name': 'mine', 'phone': '+92jdddxxx'}, '10/20': {'Name': 'vinay', 'phone': '+91094xxx'}, '05/31': {'Name': 'hunachyal', 'phone': '+91jndjxx'}}
    

    【讨论】:

      【解决方案3】:

      这应该适合你:

      f = open('filename.txt').readlines()
      
      f = [i.strip('\n').split() for i in f]
      
      new_dict = {i[0]:{i[b]:i[b+1] for b in range(1, len(i), 2) if b+1 < len(i)} for i in f}
      
      print new_dict
      

      【讨论】:

        【解决方案4】:

        试试这个:)

        infile = open("data.txt")
        for line in infile:
            List_array = [w.strip() for w in line.split("\t")]
            bday_list[List_array[0]] ={"Phone":List_array[1],"Name":List_array[2]} 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-02
          • 1970-01-01
          • 2019-05-05
          • 1970-01-01
          • 2021-04-15
          • 1970-01-01
          相关资源
          最近更新 更多