如何将空格和逗号分隔的数字字符串转换为 int 列表? [复制]

Posted

技术标签:

【中文标题】如何将空格和逗号分隔的数字字符串转换为 int 列表? [复制]【英文标题】:How to convert a string of space- and comma- separated numbers into a list of int? [duplicate] 【发布时间】:2013-10-20 11:48:35 【问题描述】:

我有一串数字,比如:

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

我想把它转换成一个列表:

example_list = [0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

我尝试了类似的方法:

for i in example_string:
    example_list.append(int(example_string[i]))

但这显然不起作用,因为字符串包含空格和逗号。但是,删除它们不是一种选择,因为像“19”这样的数字会被转换为 1 和 9。你能帮我解决这个问题吗?

【问题讨论】:

example_string.split(',') 【参考方案1】:

用逗号分割,然后映射到整数:

map(int, example_string.split(','))

或者使用列表推导:

[int(s) for s in example_string.split(',')]

如果您想要列表结果,后者效果更好,或者您可以将map() 调用包装在list() 中。

这是因为int() 允许空格:

>>> example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
>>> list(map(int, example_string.split(',')))  # Python 3, in Python 2 the list() call is redundant
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
>>> [int(s) for s in example_string.split(',')]
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

只是上分割一个逗号也更能容忍可变输入;值之间使用 0、1 或 10 个空格无关紧要。

【讨论】:

对于python3,您必须将map(int, example_string.split(','))更改为list(map(int, example_string.split(','))) @Tengerye:这取决于;如果你只需要一个可迭代的 map() 对象就可以了。 谢谢一百万!!!!【参考方案2】:

它应该可以工作

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
example_list = [int(k) for k in example_string.split(',')]

【讨论】:

【参考方案3】:

您还可以对拆分的字符串使用列表推导

[ int(x) for x in example_string.split(',') ]

【讨论】:

【参考方案4】:

试试这个:

import re
[int(s) for s in re.split('[\s,]+',example_string)]

【讨论】:

【参考方案5】:

我猜最肮脏的解决方案是这样的:

list(eval('0, 0, 0, 11, 0, 0, 0, 11'))

【讨论】:

如果原始数字字符串以“python 格式”存储,则此解决方案实际上将适应存储的任何类型的数据。 '0, 0, 0, 11' 将映射到 int 类型,而 '0.12, 0.1, 1.2' 将映射到 float 类型,无需显式编码。 它可能更脏,但它足够脏,足以让你赢得我的反对票。为什么还要发布这样一个可怕的解决方案?【参考方案6】:
number_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

number_string = number_string.split(',')

number_string = [int(i) for i in number_string]

【讨论】:

嘿 Rohit :)。欢迎来到 SO。您介意为您的代码添加一些解释吗?所以下一个进来的人对你的答案有更好的了解:)。

以上是关于如何将空格和逗号分隔的数字字符串转换为 int 列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python中,如何将字符串中的多个不等量空格改为改为逗号分隔?

将整列整数转换为字符串,在 Pandas 中使用逗号分隔千位

将 int[] 转换为逗号分隔的字符串

将逗号,空格,回车, |,分隔的字符串转换为数组

将逗号分隔字符串的熊猫列转换为虚拟变量

将字符串中的逗号分隔数字转换为数字向量[重复]