gpt4 book ai didi

python - 将列表的大字符串表示形式转换为列表 Python 3

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:34 25 4
gpt4 key购买 nike

我有一个(大量的)列表表示为一个字符串(不是这样,这只是一个例子)

"['A', 'B', 'C']"

我需要将其设为列表类型:

['A', 'B', 'C']

但如果我这样做:

list("['A', 'B', 'C']")

显然我会得到:

['[', "'", 'A', "'", ',', ' ', "'", 'B', "'", ',', ' ', "'", 'C', "'", ']']

目前我正在使用:

ast.literal_eval("['A', 'B', 'C']")

除了我的程序处理的列表很大,字符串有数百万字节(测试字符串超过 400 万个字符)。因此,每当我尝试运行它时,我的 ast.literal_eval() 都会返回 MemoryError。

因此,我需要的是一种方法(它不必是 pythonic,优雅甚至特别高效)将这些巨大的字符串放入列表而不返回内存错误。

最佳答案

输入数据格式不完全标准,解析起来不方便,尤其是它变得很大。根据数据的来源,您应该开始将其保存在真实数据库 中,或者考虑使其可通过 JSON 解析的方法。例如,如果我们将当前示例输入中的单引号替换为双引号,我们可以使用 json 对其进行解析。 :

>>> import json
>>> s = "['A', 'B', 'C']"
>>> json.loads(s.replace("'", '"'))
[u'A', u'B', u'C']

那么,一旦数据是JSON,那就是一个不同的、更常见的问题了。您可以使用增量解析器之一,例如 ijson ,或事件驱动的 yajl , 以避免内存错误。

关于python - 将列表的大字符串表示形式转换为列表 Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com