gpt4 book ai didi

Python:将文本文件读入字典并忽略注释

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:57 24 4
gpt4 key购买 nike

我正在尝试将以下文本文件放入字典中,但我希望忽略以“#”开头的任何部分或空行。

我的文本文件看起来像这样:

# This is my header info followed by an empty line

Apples 1 # I want to ignore this comment
Oranges 3 # I want to ignore this comment

#~*~*~*~*~*~*~*Another comment~*~*~*~*~*~*~*~*~*~*

Bananas 5 # I want to ignore this comment too!

我想要的输出是:

myVariables = {'Apples': 1, 'Oranges': 3, 'Bananas': 5}

我的Python代码如下:

filename = "myFile.txt"
myVariables = {}

with open(filename) as f:
for line in f:
if line.startswith('#') or not line:
next(f)

key, val = line.split()
myVariables[key] = val
print "key: " + str(key) + " and value: " + str(val)

我得到的错误:

Traceback (most recent call last):
File "C:/Python27/test_1.py", line 11, in <module>
key, val = line.split()
ValueError: need more than 1 value to unpack

我理解该错误,但不明白代码出了什么问题。

提前谢谢您!

最佳答案

鉴于您的文字:

text = """
# This is my header info followed by an empty line

Apples 1 # I want to ignore this comment
Oranges 3 # I want to ignore this comment

#~*~*~*~*~*~*~*Another comment~*~*~*~*~*~*~*~*~*~*

Bananas 5 # I want to ignore this comment too!
"""

我们可以通过两种方式做到这一点。使用 regex 或使用 Python 生成器。我会选择后者(如下所述),因为在这种情况下,正则表达式并不是特别快。

打开文件:

with open('file_name.xyz', 'r') as file: 
# everything else below. Just substitute `for line in lines` with
# `for line in file.readline()`

现在要创建类似的内容,我们拆分行并创建一个列表:

lines = text.split('\n')  # as if read from a file using `open`. 

以下是我们如何用几行代码完成您想要的一切:

# Discard all comments and empty values.
comment_less = filter(None, (line.split('#')[0].strip() for line in lines))

# Separate items and totals.
separated = {item.split()[0]: int(item.split()[1]) for item in comment_less}

让我们测试一下:

>>> print(separated)
{'Apples': 1, 'Oranges': 3, 'Bananas': 5}

希望这有帮助。

关于Python:将文本文件读入字典并忽略注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37057663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com