如何将文件保存数组中的as字符串转换为python中的数组对象?

时间:2019-03-30 10:46:03

标签: python string list

我用python将两个二维列表保存到一个文件中,现在我想将此字符串恢复到两个列表中,但是不知道如何在不进行很多混乱拆分的情况下很好地做到这一点。有解决此问题的功能吗?

文件(lists.txt)如下:

[['someting1', 'someting2', 'someting3', 'someting4'], ['someting else1', 'someting else2', 'someting else3', 'someting else4']]
[['different1', 'different2', 'different3'], ['wow is this different1', 'wow is this different2', 'wow is this different3']]

这应该转换成二维列表,结果看起来像这样

print(listForLine1[1][1]) >> 'someting else2'
print(listForLine1[0][2]) >> 'different3'

谢谢 维姆

编辑:

我发现将列表另存为文本并不是一个好主意,因为特殊字符(如'和')可能会导致将文本再次转换回列表时变得复杂。

对此更好的解决方案是使用pandas数据框,将其保存到csv中,然后可以使用pandas重新打开。

示例:

import pandas as pd

dataToAdd = [["test","test"]["test","test"]]
df = pd.DataFrame(data=dataToAdd)
file = open("filetowriteto", 'w+')
file.write(df.to_csv())

2 个答案:

答案 0 :(得分:0)

尝试使用

json.load(file_obj)

json.loads(str_obj)

为此,您将必须使用

导入JSON。
import json

请记住,在文件中写入文本时,请使用双引号(“)而不是单(')。

这将从文件中将字符串作为字典/列表对象加载。 希望这可以帮助。 欢迎使用Stack Overflow! :)

答案 1 :(得分:0)

In [734]: alist1 = [['someting1', 'someting2', 'someting3', 'someting4'], ['someting else1', 'someting else2', 'someting else3', 'someting else4']]   
In [735]: str(alist1)                                                           
Out[735]: "[['someting1', 'someting2', 'someting3', 'someting4'], ['someting else1', 'someting else2', 'someting else3', 'someting else4']]"

可以使用csv将类似的列表另存为savetxt

In [736]: np.savetxt('strings.txt',alist1, delimiter=',', fmt='%s')             

In [737]: cat strings.txt                                                       
someting1,someting2,someting3,someting4
someting else1,someting else2,someting else3,someting else4

我本可以指定格式字段的宽度来对齐列。

还选择文本中未出现的定界符。

在任何情况下,都可以使用genfromtxt加载该文件。 (熊猫csv阅读器也可以使用)。

In [738]: np.genfromtxt('strings.txt', delimiter=',', dtype=str)                
Out[738]: 
array([['someting1', 'someting2', 'someting3', 'someting4'],
       ['someting else1', 'someting else2', 'someting else3',
        'someting else4']], dtype='<U14')

通常以ndarray格式书写和阅读列表或str并不是一个好主意。解析可能会更加困难,甚至是不可能的。该格式用于人类可读性,而不是机器解析。

另一个答案表明,json是列表(和字典)的不错选择。