将字符串(无分隔符)转换为列表
我有一个电话号码(字符串),比如说“+123-456-7890”,我想把它变成一个列表,像这样:[+, 1, 2, 3, -, ...., 0]。
为什么要这样做呢?因为我想逐个遍历这个列表,把所有的符号去掉,这样我就只剩下数字的列表,最后可以再把它转换回字符串。
那么,解决这个问题的最好方法是什么呢?我遇到的解决方案都不适用,因为在数字之间没有特殊字符(所以我不能在那儿分割字符串)。
有没有什么好主意?我非常感谢!
补充 - 这是我尝试过的:
x = row.translate(None, string.digits)
list = x.split()
还有:
filter(lambda x: x isdigit())
9 个回答
6
''.join(filter(str.isdigit, "+123-456-7890"))
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
61
创建一个 list(your_string)。
>>> s = "mep"
>>> list(s)
['m', 'e', 'p']
9
你的意思是你想要类似这样的东西:
''.join(n for n in phone_str if n.isdigit())
这个代码利用了字符串是可迭代的特性。当你遍历字符串时,它会一次给你一个字符。
关于你的尝试,
这个代码实际上是去掉了字符串中的所有数字,只留下非数字的部分。
x = row.translate(None, string.digits)
这个代码是根据空格的连续出现来分割字符串,而不是在每个字符后面分割:
list = x.split()