【问题标题】:Filtering Data in a Text File with Python使用 Python 过滤文本文件中的数据
【发布时间】:2011-01-14 05:11:01
【问题描述】:

我是 Python 新手(比如 Zygote new),它只是为了补充另一个程序,但我需要一个文本文件,它是游戏的一组项目,它的格式如下:

[1]
Name=Blah
Faction=Blahdiddly
Cost=1000

[2]
Name=Meh
Faction=MehMeh
Cost=2000

[3]
Name=Lollypop
Faction=Blahdiddly
Cost=100

而且我需要能够找出哪些组(括号中的数字)具有匹配值。

所以,如果我搜索 Faction=Blahdiddly,第 1 组和第 3 组就会出现。

不幸的是,我不知道该怎么做。

谁能帮忙?

【问题讨论】:

  • 您可以控制所使用的文件格式吗?如果您只想加载数据并在 progs 之间共享数据,XML 可能适合您。如果你想做搜索和排序,你可能想开始寻找像 SQlite 这样的数据库。

标签: python file text filter


【解决方案1】:

正如 Senthil 所指出的,ConfigParser 是您真正想要读取的文件。但是,它并没有提供一种简单的方法来按您想要的方式过滤事物。您可以这样做(获取部分的列表,查看键是否在每个部分中,如果是,则它是否具有所需的值,如果是,则记录该部分),但类似这样的事情可能更直接。

datafile = open("datafile.txt")

section = None
found   = []

match   = set(["Faction=Blahdiddly"])  # can be multiple items

for line in datafile:
    line = line.strip()
    if line.startswith("[") and line.endswith("]"):
        section = line.strip("[]")
    elif line in match:
        found.append(section)

print found

【讨论】:

  • 那么你在 [match1,match2,match3] 中执行此“elif 行:”
  • ...或者一套,更好。
【解决方案2】:

你看过ConfigParser 模块吗?您描述的文本文件似乎是 ConfigParser 可以立即识别的内容。 Here is an example 让您开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多