【发布时间】:2013-03-09 17:51:51
【问题描述】:
我有一个电话号码(字符串),例如“+123-456-7890”,我想变成一个看起来像这样的列表:[+, 1, 2, 3, -, ...., 0]。
为什么?所以我可以遍历列表并删除所有符号,所以我只剩下一个数字列表,然后我可以将其转换回字符串。
解决此问题的最佳方法是什么?我遇到的所有解决方案都不适用,因为我在数字之间没有任何特殊字符(所以我不能在那里拆分字符串。)
有什么想法吗?我真的很感激!
编辑 - 这是我尝试过的:
x = row.translate(None, string.digits)
list = x.split()
还有:
filter(lambda x: x isdigit())
【问题讨论】:
-
顺便说一句——通常,我们希望用户展示他们已经尝试过的代码。这是一个非常简单的问题,因此查看您尝试过的(以及失败的)可能会帮助我们帮助您更好地理解语言(而不是仅仅给您一个答案并让您在没有真正工具的情况下解决问题)下一个问题)
-
好的 - 我已经添加了我尝试过的内容。我认为它不相关,所以我最初没有发布它
-
这正是我所要求的。我已将我的反对票改为赞成票,因为这些尝试似乎是合理的。
-
@nv39 所以你正在弄清楚更喜欢哪种解决方案。 mgilson、uptownnickbrown、tur1ng 和 Kabie 有可行的解决方案。我的偏好是使用生成器 + 连接的 mgilson; Kabie 用于连接加过滤器(更喜欢生成器而不是过滤器); tur1ng 用于正则表达式(不是很复杂,不足以保证正则表达式); uptownnickbrown 用于迭代和字符串追加(有效但不是首选的 python 习语)。无论如何,这就是我看待它们的方式——纯粹是风格问题。我怀疑这里是否有任何速度问题需要考虑。
-
@nv39,顺便说一句,
row.translate(None, '+-')似乎是最快的