gpt4 book ai didi

python 将文本文件解包到单独的变量中

转载 作者:行者123 更新时间:2023-12-01 08:41:07 25 4
gpt4 key购买 nike

我有一个格式如下的 .txt 文件

60
4
20
YF
X:YF+XF+Y
Y:XF-YF-X

我需要每一行都是一个单独的变量,最后两行被分解为字典中的键和值。我目前有这个:

class LSystem:
def __init__(self,filename):

#complete this method
self.rules = {}
file = open(filename)
for i, line in enumerate(filename):
if i == 0:
self.angle = line
elif i == 1:
self.iteration = line
elif i == 2:
self.distance = line
elif i == 3:
self.axiom = line
elif i >= 4:
(key,val)= line.split
self.rules[key] = val

file.close()

这给了我这个错误:

Traceback (most recent call last):
File "lab10.py", line 65, in <module>
main()
File "lab10.py", line 10, in main
sys = lsystem.LSystem("arrowheadcurve.txt")
File "/Users/alongo/Dropbox/Freshman Fall Semester/CS 110/Labs/lab-10-fall18-antmelon/lsystem.py", line 17, in __init__
(key,val)= line.split
TypeError: cannot unpack non-iterable builtin_function_or_method object

你如何解决这个问题?

最佳答案

正如 @Carcigenicate 所评论的,line.split 实际上并没有调用 split() 函数。您需要通过包含括号来调用它:

(key,val) = line.split()

但请注意 split()将在空白字符上分割。对于您的输入,这将导致一个包含三个项的列表,并且将其解包为仅两个变量也会失败。

我假设您应该拆分 : (进一步假设 : 不能出现在表达式中的其他位置)。试试这个:

(key, val) = line.split(' : ')

我已将周围的空格包含在分隔符中,结果中不存在前导空格和尾随空格。如果空白不一致可以这样处理:

key, val = [s.strip() for s in line.split(':')]

此外,通过使用文件对象而不是文件名字符串来修复文件迭代,并在 with 语句中打开它(这样可以保证正确关闭):

    with open(filename) as f:
for i, line in enumerate(f):
line = line.strip() # remove leading and trailing white space
if i == 0:
self.angle = line

关于python 将文本文件解包到单独的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53491127/

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