我正在尝试保存并读取保存在文本文件中的字符串。
a = [['str1','str2','str3'],['str4','str5','str6'],['str7','str8','str9']]
file = 'D:\\Trails\\test.txt'
# writing list to txt file
thefile = open(file,'w')
for item in a:
thefile.write("%s\n" % item)
thefile.close()
#reading list from txt file
readfile = open(file,'r')
data = readfile.readlines()#
print(a[0][0])
print(data[0][1]) # display data read
输出:
str1
'
a [0] [0]和data [0] [0]都应该具有相同的值,我保存的读数返回为空。保存文件有什么错误?
更新:
'a'数组具有不同长度的字符串。我可以在保存文件时做出哪些更改,以便输出相同。
更新:
我使用此link将文件保存在csv而不是文本中进行了更改,文本如何保存数据?
答案 0 :(得分:1)
您可以将列表直接保存在文件中,并使用 eval 功能将已保存的数据再次转换为列表中的文件。不推荐使用,但是,以下代码可以使用。
a = [['str1','str2','str3'],['str4','str5','str6'],['str7','str8','str9']]
file = 'test.txt'
# writing list to txt file
thefile = open(file,'w')
thefile.write("%s" % a)
thefile.close()
#reading list from txt file
readfile = open(file,'r')
data = eval(readfile.readline())
print(data)
print(a[0][0])
print(data[0][1]) # display data read
print(a)
print(data)
答案 1 :(得分:0)
a和数据的值不同,a是三个列表的列表。
而数据是包含三个字符串的列表。
readfile.readlines()
或list(readfile)
将所有行都写入列表中。
因此,当您执行data = readfile.readlines()
python时,请将['str1','str2','str3']\n
视为单个字符串而不是列表。
因此,要获得所需的输出,您可以使用以下print语句。
print(data[0][2:6])