python区分数字和字符串解决方案

时间:2017-05-17 05:48:07

标签: python string numbers

我是python的新手并试图解决数字和字符串之间的区别 例如:

  • 输入:111aa111aa
  • 输出:编号:111111,字符串:aaaa

5 个答案:

答案 0 :(得分:3)

您可以将in-built函数用作isdigit()isalpha()

>>> x = '111aa111aa'
>>> number = ''.join([i for i in x if i.isdigit()])
'111111'
>>> string = ''.join([i for i in x if i.isalpha()])
'aaaa'

或者你可以在这里使用regex

>>> x = '111aa111aa'
>>> import re
>>> numbers = ''.join(re.findall(r'\d+', x))
'111111'
>>> string = ''.join(re.findall(r'[a-zA-Z]', x))
'aaaa'

答案 1 :(得分:2)

这是你的答案 数字

import re
x = '111aa111aa'
num = ''.join(re.findall(r'[\d]+',x))

表示字母

import re
x = '111aa111aa'
alphabets = ''.join(re.findall(r'[a-zA-Z]', x))

答案 2 :(得分:1)

>>> my_string = '111aa111aa'
>>> ''.join(filter(str.isdigit, my_string))
'111111'
>>> ''.join(filter(str.isalpha, my_string))
'aaaa'

答案 3 :(得分:0)

尝试使用isalpha获取字符串,使用isdigit获取数字,

In [45]: a = '111aa111aa'
In [47]: ''.join([i for i in a if i.isalpha()])
Out[47]: 'aaaa'
In [48]: ''.join([i for i in a if i.isdigit()])
Out[48]: '111111'

OR

In [18]: strings,numbers = filter(str.isalpha,a),filter(str.isdigit,a)

In [19]: print strings,numbers
aaaa 111111

答案 4 :(得分:0)

正如您所提到的,您是Python的新手,大多数使用str.join的列表推导或功能样式的方法都已经足够了。或者,我使用dictionaries提供了一些可以帮助组织数据的选项,从基本示例到中间示例,可能会增加复杂性。

基本选择

# Dictionary
d = {"Number":"", "String":""}
for char in s:
    if char.isdigit():
        d["Number"] += char
    elif char.isalpha():
        d["String"] += char
d
# {'Number': '111111', 'String': 'aaaa'}
d["Number"]                                                # access by key
# '111111'

import collections as ct

# Default Dictionary
dd = ct.defaultdict(str)
for char in s:
    if char.isdigit():
        dd["Number"] += char
    elif char.isalpha():
        dd["String"] += char
dd