保存字符串列表到文本文件中的问题

时间:2018-04-02 11:21:27

标签: python-3.x text save

我正在尝试保存并读取保存在文本文件中的字符串。

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而不是文本中进行了更改,文本如何保存数据?

2 个答案:

答案 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])