我是python的新手并试图解决数字和字符串之间的区别 例如:
答案 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