【问题标题】:Get a string after a character in python在python中获取一个字符后的字符串
【发布时间】:2018-11-19 18:32:18
【问题描述】:

获取一个出现在'%' 符号之后并且应该在其他字符之前结束的字符串(没有数字和字符)。 例如:

string = 'Hi %how are %YOU786$ex doing'

它应该作为一个列表返回。

['how', 'you']

我试过了

string = text.split()

sample = []

for i in string:
    if '%' in i:
        sample.append(i[1:index].lower())
return sample

但我不知道如何摆脱'you786$ex'编辑:我不想重新导入

【问题讨论】:

  • 你研究过正则表达式吗?

标签: python list slice


【解决方案1】:

您可以使用正则表达式。

>>> import re
>>> 
>>> s = 'Hi %how are %YOU786$ex doing'
>>> re.findall('%([a-z]+)', s.lower())
>>> ['how', 'you']

regex101 details

【讨论】:

    【解决方案2】:

    这可以通过re.findall() 轻松完成:

    import re
    re.findall(r'%([a-z]+)', string.lower())
    

    这会返回:

    ['how', 'you']
    

    或者您可以使用str.split() 并遍历字符:

    sample = []
    for token in string.lower().split('%')[1:]:
        word = ''
        for char in token:
            if char.isalpha():
                word += char
            else:
                break
        sample.append(word)
    

    sample 会变成:

    ['how', 'you']
    

    【讨论】:

      【解决方案3】:

      使用Regex(正则表达式)。

      首先,为您的任务创建一个正则表达式模式。您可以使用在线工具对其进行测试。请参阅您的任务的正则表达式:https://regex101.com/r/PMSvtK/1

      然后在 Python 中使用这个正则表达式:

      import re
      
      def parse_string(string):
          return re.findall("\%([a-zA-Z]+)", string)
      
      print(parse_string('Hi %how are %YOU786$ex doing'))
      

      输出:

      ['how', 'YOU']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 2011-07-07
        • 2011-08-17
        • 1970-01-01
        相关资源
        最近更新 更多