【问题标题】:Python - Get string after and before a CharacterPython - 在字符之后和之前获取字符串
【发布时间】:2018-04-16 14:08:02
【问题描述】:

我有这个字符串:

"I have been working - 8h by day"
"Like - 9H by Month"

我正在尝试获取小时数。基本上我试图得到这个输出:

8
9

我尝试了这个但没有成功:

print(myString.split("H",1)[1] )

但我明白了:

builtins.IndexError: list index out of range

如何在 Python 中获取“-”之后和“H”之前的字符串?

谢谢!

【问题讨论】:

    标签: python substring charindex


    【解决方案1】:

    你遇到的问题是"I have been working - 8h by day" 里面没有"H",所以当你用“H”分割时,列表中只有一个元素。

    你可以使用正则表达式找到它

    import re
    pattern = r'\d(?=[h|H])'
    data = ["I have been working - 8h by day",
            "Like - 9H by Month"]
    
    for item in data:
        print re.findall(pattern, item)
    

    【讨论】:

      【解决方案2】:

      使用正则表达式

      例如:

      import re
      
      s = ["I have been working - 8h by day", "Like - 9H by Month"]
      for i in s:
          print(re.findall("\d+H" ,i, flags=re.I))
      

      输出:

      ['8']
      ['9']
      

      【讨论】:

        【解决方案3】:

        您可以使用re.findall 匹配所有数字,前提是后面跟hH

        import re
        s = ["I have been working - 8h by day", "Like - 9H by Month"]
        new_s = [re.findall('\d+(?=H)', i, flags=re.I)[0] for i in s]
        

        输出:

        ['8', '9']
        

        【讨论】:

          【解决方案4】:

          这样做有一个危险,它会在其他 H 上分裂并保留整个字符串(要解决这个问题,请使用正则表达式编写更好的表达式)。

          按原样解析您的代码:

          print(myString.split("H",1)[0][::-1][0])
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-11-10
            • 2018-06-27
            • 1970-01-01
            • 1970-01-01
            • 2015-06-06
            • 2022-01-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多