繁体   English   中英

如何将字符串列表更改为元素列表(数字)?

[英]How to change list of string to list of elements (numbers)?

当我使用:

with open("test.txt") as file
    read = csv.reader(file)
    for i in read:
        print(i)

我有类似的东西:

['[0', ' 0', ' 1', ' 0]']

我需要:

[0, 0, 1, 0]

请问有什么建议吗?

ad = ['[0', ' 0', ' 1', ' 0]']
for i in range(len(ad)):
    ad[i] = int(ad[i].replace("[", "").replace("]", ""))
print ad
[0, 0, 1, 0]

通常,最简单的解决方案是列表理解,其中new = [int(a) for a in old] 但是,在您的情况下,列表的第一个和最后一个元素实际上也有括号。

相反,您需要执行以下操作:

new = [int("".join(filter(str.isdigit, a))) for a in old]

这是一个相当大的一个班轮,所以让我们分解一下。

  1. 列表推导遍历列表中的每个元素(我称之为old )并将其命名a
  2. A 通过 function str.isdigit传递到filter命令中。 这基本上删除了任何不是数字的字符。 这个问题是它返回一个迭代器而不是一个简单的值。
  3. 为了解决迭代器问题,我用"".join()命令包装了过滤器命令,以将其转换为简单的字符串值。 该字符串将只有数字。
  4. 最后,我们可以使用int命令包装整个内容,它将您的值转换为 int。

如果你不喜欢单线,也可以这样做:

new = []
for a in old:
    filtered = filter(str.isdigit, a)
    num_str = "".join(filtered)
    num.append(int(num_str))

这是同样的事情,但有点冗长。

def parseToInt(s): 
    ...:     return int((s.replace('[', '')).replace(']', ''))
list(map(lambda x: parseToINt(x), a))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM