我想将字符串列表转换为数字列表,但没有运气
我的字符串就像
x=[9,-5,-45,99]
我想将其转换为:
string.replace('-','')
我试图在列表中循环并替换' - '在列表中的每个字符串中使用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
输出:
base64toBlob(base64Data, contentType) {
contentType = contentType || '';
var sliceSize = 1024;
var byteCharacters = atob(base64Data);
var bytesLength = byteCharacters.length;
var slicesCount = Math.ceil(bytesLength / sliceSize);
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
var begin = sliceIndex * sliceSize;
var end = Math.min(begin + sliceSize, bytesLength);
var bytes = new Array(end - begin);
for (var offset = begin, i = 0 ; offset < end; ++i, ++offset) {
bytes[i] = byteCharacters[offset].charCodeAt(0);
}
byteArrays[sliceIndex] = new Uint8Array(bytes);
}
return new Blob(byteArrays, { type: contentType });
}
任何帮助?
答案 0 :(得分:4)
正如指出python中的字符串是不可变的。对它们的操作返回新字符串而不是更改原始字符串。您的输出要求也是整数列表,因此您必须解析字符串:
In [1]: x=[u'9-9', u'-5-5',u'-45-45',u'99-99']
In [2]: [int(i.rsplit('-', 1)[0]) for i in x]
Out[2]: [9, -5, -45, 99]
使用list comprehension字符串为split starting from right 1次仅使用'-'
作为分隔符,并拾取第一个字符串并将其解析为整数。
答案 1 :(得分:3)
使用正则表达式:
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]
答案 2 :(得分:2)
str.replace
不在原位。它返回一个包含替换字符的新字符串。因此:
for i in x:
string.replace(str(i),"-",' ')
不会影响x
中的字符串。
您还应该直接在您拥有的字符串对象上调用replace
,而不是从replace
模块调用常规string
。
相反,你应该做的是:
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
答案 3 :(得分:2)
id喜欢使用e正则表达式。只需查看here并使用this撰写正则表达式
import re
x=[u'9-9', u'-5-5',u'-45-45',u'99-99']
rexp = '(.*)-\d+'
c = re.compile(rexp)
for i in x:
print(int(c.search(i).groups()[0]))
答案 4 :(得分:2)
import re
[int(re.sub(r"(-\d+$)", r"", i)) for i in x]
#[9, -5, -45, 99]