【问题标题】:How to remove leading underscores and numbers in a string in Python [closed]如何在Python中删除字符串中的前导下划线和数字[关闭]
【发布时间】:2017-03-15 02:49:15
【问题描述】:

我需要清理一些字符串并从中删除无效的前导(非字母)字符。例如: "3_hello" -> "hello" "_hello" -> "hello" "__hello" -> "hello" "++hello" -> "hello"

有没有快速使用 re 来完成任务的方法?

【问题讨论】:

  • 你对想要获取的单词有什么了解吗?
  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另请参阅How to Ask。
  • 您可以在此处使用yourstring.lstrip('3_+')。
  • 不,输入来自用户,我需要将它们转换为以字母开头的名称,以便它们可以在系统中进行处理。
  • “删除无效的前导字符”:什么是无效字符?

标签: python regex string


【解决方案1】:

你可以试试^[^A-Za-z]*,这里有一些测试用例:

import re
re.sub('^[^A-Za-z]*', '', "3_hello")
# 'hello'

re.sub('^[^A-Za-z]*', '', "_hello")
# 'hello'

re.sub('^[^A-Za-z]*', '', "++hello")
# 'hello'

re.sub('^[^A-Za-z]*', '', "__hello")
# 'hello'
  • 其中第一个^ 表示字符串的开头;
  • 在字符类[] 中使用另一个^ 来否定字母;
  • 使用* 作为贪心量词,这样从字符串开头开始的所有非字母都将被删除。

【讨论】:

    【解决方案2】:

    您可以使用函数 str.isalpha() 并迭代字符串以仅获取字母并将其放在另一个变量中。

    【讨论】:

      【解决方案3】:
      import re
      for string in [ "++hello", "__hello", "3_hello"]:
          print "".join(re.findall("[a-zA-Z]", string))
      
      hello
      hello
      hello
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,包括解释 really helps 以提高您的帖子质量。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
      【解决方案4】:

      我建议你使用re.search来搜索字母字符串:

      m = re.search("[a-zA-Z]+", "3_hello")
      print(m.group(0))
      
      hello
      

      【讨论】:

        【解决方案5】:

        您可以使用循环和 str.isalpha 去除前导非字母字符

        a = '3_hello'
        for i in range (0, len(a)):
            if str.isalpha(a[i:]):
                a=a[i:]
                break
        print(a)
        

        你好

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          • 1970-01-01
          • 2012-10-12
          • 1970-01-01
          相关资源
          最近更新 更多