[英]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]
这是一个相当大的一个班轮,所以让我们分解一下。
old
)并将其命名a
str.isdigit
传递到filter
命令中。 这基本上删除了任何不是数字的字符。 这个问题是它返回一个迭代器而不是一个简单的值。"".join()
命令包装了过滤器命令,以将其转换为简单的字符串值。 该字符串将只有数字。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.