无论我尝试什么,我一直对我不断得到的错误感到非常沮丧。我正在尝试从文件中的列表单词中创建变量,并将它们设置为空字符串(供以后使用)。
以下是代码段:
values = []
input_values = open('list.txt')
for i in input_values.readlines():
i = i.strip("\n")
values.append(str(i))
for i in values:
exec(str(i) + " = ''")
这是输出:
Traceback (most recent call last):
File "script.py", line 59, in <module>
exec(str(i) + " = ''")
File "<string>", line 2
= ''
^
IndentationError: unexpected indent
我也尝试过不使用for i in values
但仍然获得相同的输出。有什么奇怪的是我可以打印这个值,但不能使用它。如果我在print i
行之后添加strip()
,则line1
会添加到输出的顶部。
所以这个:
values = []
input_values = open('list.txt')
for i in input_values.readlines():
i = i.strip("\n")
print i
values.append(str(i))
exec(str(i) + " = ''")
产生这个:
line1
Traceback (most recent call last):
File "script.py", line 59, in <module>
exec(str(i) + " = ''")
File "<string>", line 2
= ''
^
IndentationError: unexpected indent
我做错了什么?
答案 0 :(得分:2)
文件末尾至少有一个空行,带有空格,导致错误。你想要strip
所有行中的空格,然后检查它们是否为空,然后将它们附加到列表中:
values = []
input_values = open('list.txt')
for i in input_values.readlines():
i = i.strip()
if i:
values.append(str(i))
for i in values:
exec(str(i) + " = ''")
此外,.readlines
是不必要的,values
是不必要的,甚至exec
完全没必要 - 相反,你可以使用它:
with open('list.txt') as input_values:
for i in input_values:
i = i.strip()
if i:
globals()[i] = ''
虽然如果您尝试设置名为5
的变量(例如