首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用数字和字母拆分Python字符串?

如何用数字和字母拆分Python字符串?
EN

Stack Overflow用户
提问于 2014-02-20 19:46:47
回答 5查看 8.6K关注 0票数 4

我的字符串有可选的数字和字母,例如'01a‘、'b’和'02‘。这些字符串总是有两个部分,数字在左边,字母在右边。我想把这些字符串分开,把数字和字母分开。如何以一种方式定义mySplit以获得此结果?

代码语言:javascript
复制
>>> map(mySplit, ['01123absd', 'bsdf', '02454'])

[('01123', 'absd'), (None, 'bsdf'), ('02454', None)]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-20 20:14:18

您可以为此使用正则表达式。我们想要的是:

  • 以0或更多位数开头的字符串,
  • 以0或多个字母结尾的字符串。

请注意,regex将创建命名组,每次调用时都会编译一次以提高效率。

代码语言:javascript
复制
import re
regex = re.compile("^(?P<numbers>\d*)(?P<letters>\w*)$")

def myFunction(entry):
  (numbers, letters) = regex.search(entry).groups()
  return (numbers or None, letters or None)

map(myFunction, ['01123absd', 'bsdf', '02454'])

最后一行的调用提供了以下输出:

代码语言:javascript
复制
[('01123', 'absd'), (None, 'bsdf'), ('02454', None)]
票数 6
EN

Stack Overflow用户

发布于 2014-02-20 20:00:32

类似于jramirez answer,只是稍微短了一点:

代码语言:javascript
复制
def myFunction(s):
    return (''.join(c for c in s if c.isdigit()) or None, 
            ''.join(c for c in s if c.isalpha()) or None)

使用filter的时间稍微短一点

代码语言:javascript
复制
def myFunction(s):
    return (''.join(filter(str.isdigit, s)) or None, 
            ''.join(filter(str.isalpha, s)) or None)

输出:

代码语言:javascript
复制
print(*map(myFunction, ['01123absd', 'bsdf', '02454', '012abc345def']))
('01123', 'absd') (None, 'bsdf') ('02454', None) ('012345', 'abcdef')
票数 4
EN

Stack Overflow用户

发布于 2014-02-20 19:56:57

如果您不想使用regex,这是一个解决方案:

代码语言:javascript
复制
def split_num_str(my_str):
    num = [x for x in my_str if x.isdigit()]
    num = "".join(num)

    if not num:
        num = None

    my_str = [x for x in my_str if x.isalpha()]
    my_str = ''.join(my_str)

    if not my_str:
        my_str = None

    return num, my_str

m = map(split_num_str, ['01123absd', 'bsdf', '02454'])
print m

结果= [('01123', 'absd'), (None, 'bsdf'), ('02454', None)]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21917989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档