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

2024-09-27 07:18:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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())

Tags: 文件test文本pandas列表isthisprint
2条回答

尝试使用

json.load(file_obj)

或者

json.loads(str_obj)

为此,必须使用

import json

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

这将从文件中加载字符串作为dictionary/list对象。 希望这有帮助。 欢迎使用堆栈溢出!:)

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']]"

这样的列表可以使用savetxt保存为csv

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加载((读卡器也可以工作)

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')

一般来说,用str格式写和读列表或ndarray不是个好主意。解析可能更难,甚至不可能。这种格式是为了人类的可读性,而不是机器解析

如另一个答案所示,json是列表(和字典)的好选择

相关问题 更多 >

    热门问题