【问题标题】:python distinguish number and string solutionpython区分数字和字符串的解决方案
【发布时间】:2017-05-17 05:48:06
【问题描述】:

我是 python 新手,正在尝试解决数字和字符串之间的区别 例如:

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

【问题讨论】:

  • 你可以为此编写一个正则表达式

标签: python string numbers


【解决方案1】:

这是你的答案 对于数字

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】:

    您可以将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'
    

    【讨论】:

      【解决方案3】:
      >>> my_string = '111aa111aa'
      >>> ''.join(filter(str.isdigit, my_string))
      '111111'
      >>> ''.join(filter(str.isalpha, my_string))
      'aaaa'
      

      【讨论】:

        【解决方案4】:

        尝试使用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'
        

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

        【讨论】:

          【解决方案5】:

          正如您提到的,您是 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
          

          【讨论】:

            猜你喜欢
            • 2023-03-19
            • 2021-08-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多