【发布时间】:2015-01-18 00:08:51
【问题描述】:
输入的是一个包含大量字符的字符串,我希望将这个字符串拆分成一个带有特殊分隔符的字符串列表。
但我猜想简单地使用split会生成新的字符串,而不是拆分原始输入字符串本身,在这种情况下会消耗大量内存(保证不会再使用原始字符串)。
那么有没有一种方便的方法来进行这种破坏性拆分?
情况如下:
input_string = 'data1 data2 <...> dataN'
output_list = ['data1', 'data2', <...> 'dataN']
我希望 output_list 中的 data1 和 input_string 中的 data1(以及所有其他)共享相同的内存区域。
顺便说一句,对于每个输入字符串,大小为 10MB-20MB;但是因为有很多这样的字符串(大约100个),所以我想这里应该考虑内存消耗?
【问题讨论】:
-
comline = "foo bar" com = commline.split(' ') print(com[0]) 将产生“foo”,因此字符串拆分实际上会生成一个列表。
-
你的猜测是基于什么?
-
我认为
split在 python2 和 python3 中都会生成一个list。 -
"a huge number of characters" -- 我们说的有多大?兆?千兆?
-
@HongxuChen -- 这些天 MB 并不是什么大不了的事。我的建议是
.split(),不用担心。您的内存消耗大约会增加一倍——如果字符串为 10-20 Mb,您将使用大约 40 Mb。这几天真的不坏。让垃圾收集器在你有能力的时候进行清理。 :-)