【问题标题】:Reading unformatted name/value pairs from a file, formatting it, and printing it out in Python 2 dictionary [closed]从文件中读取未格式化的名称/值对,对其进行格式化,然后在 Python 2 字典中打印出来 [关闭]
【发布时间】:2015-06-12 20:16:41
【问题描述】:

给定一个像这样的文本文件

# Name_value_pair.txt
name1 = value1
name2 = value2
name3 = "some value3"
name4=value4
name5=
name6

是否可以读取该文件,将其格式化为字典并使用 python 打印出来?

我知道如何打开和阅读文件,但我不知道是否有可能过滤掉可怕的格式,以便将其变成适合制作成字典的形式?

编辑:似乎 ConfigParser 模块更适合我试图完成的工作。

【问题讨论】:

  • 您的示例文本文件的字典是什么样的? name6 连等号都没有,那么值应该是多少呢?
  • 字典应该只将“名称”作为键,将“值”作为值。 name6 将被忽略,因为它没有 =,但 name5 将被接受,其值为 null。
  • 在等号上分割线,然后从那里制作两个列表,然后将列表压缩到一个字典中,然后你就直接了。

标签: python python-2.7 dictionary io


【解决方案1】:

这将忽略任何没有'='的行,然后从剩余的行中删除每个键和值外部的任何引号和空格,然后将其放入字典中:

data = {}

with open('in.txt', 'r') as fh:
    for line in fh:
        if '=' not in line:
            continue
        line = line.replace('"', '')
        data[(line.split('='))[0].strip()] = (line.split('='))[1].strip()

for k, v in data.items():
    print("{}: {}".format(k, v))

输出:

name1: value1
name2: value2
name3: some value3
name4: value4
name5: 

【讨论】:

  • 这很有帮助!谢谢,我对 python 还很陌生(上周开始),甚至不知道从哪里开始。
  • 不客气。如果代码适合您,请将答案标记为正确。
  • 唯一的问题是,如果键没有 = 它应该被忽略,但我现在应该可以这样做了。
  • 我将进行更新,以便为open() 使用更好的形式,所以我也会为您解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多