我想将字符串列表转换为数字列表,但是没有运气。
我的绳子就像
x=[u'9-9', u'-5-5',u'-45-45',u'99-99']
我想把它转换成:
x=[9,-5,-45,99]
我尝试在列表中循环并替换'-‘,在列表中的每个字符串中使用string.replace('-','')
删除'-’,并将这个数字分成2步,但是字符串保持有字符'-‘替换不起作用’。
我的一些代码:
import string
x=[u'9-9', u'-5-5',u'-45-45',u'99-99']
for i in x:
string.replace(str(i),"-",' ')
print i
产出:
9-9
-5-5
-45-45
99-99
有什么帮助吗?
发布于 2016-06-23 08:33:21
发布于 2016-06-23 08:46:45
使用正则表达式:
import re
x = [u'9-9', u'-5-5',u'-45-45',u'99-99']
regex = "([-]?\d*)-.*"
x = [int(re.search(regex, m).group(1)) for m in x]
print(x)
# [9, -5, -45, 99]
发布于 2016-06-23 08:24:38
str.replace
不在现场.它返回一个带有替换字符的新字符串。因此:
for i in x:
string.replace(str(i),"-",' ')
不会影响x
中的字符串。
您还应该直接在您拥有的string对象上调用replace
,而不是从string
模块调用通用replace
。
相反,你应该做的是:
x = [u'9-9', u'-5-5',u'-45-45',u'99-99']
x_int = [int(string.replace('-', '')) for string in x]
print x_int
>> [99, 55, 4545, 9999]
只需一点代码就可以强调str.replace
返回一个新字符串:
x = [u'9-9', u'-5-5',u'-45-45',u'99-99']
for i in x:
print i.replace(,"-",'')
print i
>> 99
9-9
55
-5-5
4545
-45-45
9999
99-99
https://stackoverflow.com/questions/37985950
复制相似问题