我有几个列表要保存在一个.txt
文件中,都在一个新行上。所以,我有
list1 = [12, 32, 233]
list2 = [345, 823, 209]
等等。。。 我也是
with open("textfile.txt", "w") as f:
f.write(str(list1))
f.write("\n")
f.write(str(list2))
但是当我尝试读取文件时,如int()
,我得到一个错误,说:invalid literal for int() with base 10
,因为程序认为\n
也是一个字符,无法将其转换为int()
。我如何解决这个问题?
阅读线:
with open("textfile.txt", "r") as f:
data = f.readlines()
actualList1 = int(data[0])
actualList2 = int(data[1])
您可以将其拆开并以空格分隔存储,然后在阅读时将其重新组合在一起:
发生了什么事
让我们把它分解成两个步骤存储值和检索值
第1部分
所有这些都是存储由空格分隔的列表
使用
join
函数,我们可以通过一种解决方法轻松完成这一任务;由于列表中存储的值是整数,因此与此函数一起使用时,这些值必须是字符串。因此使用以下列表理解:[str(i) for i in lst]
有了这个字符串,我们最终可以添加一个换行符,以确保我们没有将所有内容组合在一起
第二部分
这有点复杂,本质上,这会创建一个文本文件行列表,然后去除其中的换行符
由此,我们用空格来
split
每行,然后在新创建的列表中将每个字符串转换为一个整数值输出:
请注意转换问题是如何由
'['
和']'
字符引起的您需要的是剥离所有这些字符(也包括
'\n'
),然后将这些数字字符串拆分为一个列表。最后,您只需将它们转换为int
在本例中,我们知道该文件至少有两行(此代码与您的代码类似):
输出:
前面的剪贴将修复应用于您的代码,但看看这个解决方案,它也适用于可变行数(此外,它更优雅):
相关问题 更多 >
编程相关推荐