【问题标题】:How to check if a string contains letters?如何检查字符串是否包含字母?
【发布时间】:2020-12-12 13:45:15
【问题描述】:

我有一个数字字符串,有时它包含字母。我必须从我的输入字符串中删除字母和之后的所有内容。 我试过了:

import re
b = re.split('[a-z]|[A-Z]', a)
b = b[0]

但只要字符串不包含字母,就会返回错误。

在尝试拆分之前是否需要检查a 是否包含字母?

如何检查

两个例子:

a = '1234' 

a = '1234h'

我想在两者之后都有b = '1234'


另一个例子:
我想要a= '4/200, 3500/ 500 h3m'a= '4/200, 3500/ 500h3m' 返回类似:

b= ['4', '200', '3500', '500']

【问题讨论】:

  • 为什么你有一个包含字符串的单元素列表,而不仅仅是一个字符串?
  • 试试this out ?
  • 错误是什么?
  • 无论如何,你想要re.sub 并且模式应该匹配一个字母后跟任意数量的其他字符(尽可能多),并且替换应该是空字符串。
  • @酷云:谢谢。但是我需要在出现任何字母后删除所有数字(如果存在任何字母)。您发送的链接,删除所有字母并保留所有数字。

标签: python string split numbers letter


【解决方案1】:
import re
match = re.search('^[\d]+', '1234h')
if match:
    print(match.group(0))

它将为“1234”和“1234h”返回'1234'。 它在开始后找到一系列数字,在字母后忽略。

【讨论】:

    【解决方案2】:
    list = ['1234abc' , '5278', 'abc58586']
    
    def range_sanitizer(s, lower_bound, upper_bound):
        return ''.join([x for x in s if lower_bound < x < upper_bound])
    
    def remove_non_digits(s):
        return range_sanitizer(s, '0', '9')
    
    def sanitize_list(list, sanitizer=remove_non_digits):
        return [sanitizer(item) for item in list]
    
    if '__main__' == __name__:
        sanitized_list=sanitize_list(list)
    
        # ['1234', '5278', '58586']
        print(sanitized_list)
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 2011-07-11
      • 1970-01-01
      • 2014-07-16
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      相关资源
      最近更新 更多