python:将字符串解包到列表中

Posted

技术标签:

【中文标题】python:将字符串解包到列表中【英文标题】:python: unpacking a string to a list 【发布时间】:2012-06-25 15:45:20 【问题描述】:

a question on multiple-value elements in a config file 的答案(完全符合我的需要)建议“从配置中解压缩字符串”。我在几个地方阅读了unpacking arguments lists 的文档,但我不明白这与我的问题有何关系。

我相信这一定很明显:有一个字符串str = "123,456",如何将其转换为列表[123,456](字符串中以逗号分隔的元素数量可能会有所不同)

谢谢。

【问题讨论】:

感谢您的回复。我通过 map() 函数学到了一些东西。此外,“str”确实是一个不好的函数名称,我通常使用 thisString 版本(但墨菲定律规定我在全球发布时使用“str”:)) 【参考方案1】:
[int(x) for x in str.split(",")]

您基本上是将函数 int 应用于拆分字符串产生的每个元素。

简单的str.split(',') 的结果将是["123","456"]

正如 Daniel Roseman 所指出的,您应该注意不要使用会无意中掩盖内置方法的变量或方法名称,例如 str

【讨论】:

【参考方案2】:

您想要字符串列表还是整数列表?

如果你只是想要一个字符串列表,那很简单:

my_list = my_string.split(',')

如果要将这些转换为整数,则需要:

my_list = map(int, my_string.split(','))

(另外,不要使用str 作为变量名,因为它会影响内置的str() 函数。)

【讨论】:

出于好奇,使用map 或仅使用我提供的语法在性能方面是否有明显差异? 并非如此。老实说,我自己通常使用列表推导式,但这次输入了map,因为它输入起来更快:-)【参考方案3】:

最简单的方法是使用split()

unpacked = str.split(',')

【讨论】:

【参考方案4】:

虽然我同意其他答案,但您也应该在假定数字的无效字符串表示的情况下处理异常。以下面的 sn-p 为例:

number_string = "123,456,x21"
delimiter = ","
number_list = []
for item in number_string.split(delimiter):
    try:
        my_num = int(item)
        number_list.append(item)
    except ValueError, e:
        # you can choose to just pass or handle the error like so
        print "Skipping %s: %s" % (item, e.message)

只是一个想法。祝你好运!

【讨论】:

以上是关于python:将字符串解包到列表中的主要内容,如果未能解决你的问题,请参考以下文章

如何将子列表中的数据解包到一个列表中? [复制]

将 JSON 行解包到 pandas 数据框

perl 将函数解包到 python

在python中将值解包到多个变量中

将 OctetString 数据解包到变量中以进行进一步处理

Python - 为字符串格式化运算符解包列表的简短方法?