如何从Python中的原始输入中提取某些数字?

时间:2010-10-09 16:19:50

标签: python regex string

假设我向用户询问一些随机字母和数字。让我们说他们给了我1254jf4h。我如何取字母jfh并将它们转换为一个单独的变量然后取数字12544并将它们放在一个单独的变量中?

3 个答案:

答案 0 :(得分:2)

>>> s="1254jf4h"
>>> num=[]
>>> alpah=[]
>>> for n,i in enumerate(s):
...   if i.isdigit():
...      num.append(i)
...   else:
...      alpah.append(i)
...
>>> alpah
['j', 'f', 'h']
>>> num
['1', '2', '5', '4', '4']

答案 1 :(得分:2)

for循环很简单。就个人而言,我会使用filter()。

s = "1254jf4h"
nums = filter(lambda x: x.isdigit(), s)
chars  = filter(lambda x: x.isalpha(), s)

print nums # 12544
print chars # jfh

答案 2 :(得分:0)

编辑:哦,你已经得到了答案。忽略。

NUMBERS = "0123456789"
LETTERS = "abcdefghijklmnopqrstuvwxyz"

def numalpha(string):
    return string.translate(None, NUMBERS), string.translate(None, LETTERS)

print numalpha("14asdf129h53")

函数numalpha返回一个带有两个字符串的2元组,第一个字符串包含原始字符串中的所有字母字符,第二个字符串包含数字。

请注意,这是非常低效的,因为它遍历字符串两次并且没有考虑数字和字母具有连续ASCII代码的事实,尽管它确实具有易于修改以与其他编码一起使用的优点。

另请注意,我只提取了小写字母。是的,这不是我写过的最好的代码片段xD。希望它无论如何都有帮助。