Python:在最后一个小写字母处拆分字符串

标签 python regex string

我想在字符串的最后一个小写字母处拆分字符串。字符串总是至少有一个小写字母。最后一个小写字母后总会有一个空格。字符串中可能有数字。

这是我想到的最好的:

s = 'Arrived at location NEWARK NJ US'
for i, c in enumerate(reversed(s)):
    if c.islower():
        d = len(s) - i
        break
a = s[:d]
b = s[d+1:]

是否有更简单或更 pythonic 的方法?也许是可读的正则表达式?

最佳答案

关于:

s = 'Arrived at location NEWARK NJ US'
pos = re.search("[a-z]", s[::-1]).start()
a, b = s[:-pos], s[1 - pos:]

ab 的结果:

Arrived at location
NEWARK NJ US

思路是通过搜索反转字符串找到最后一个小写字母的位置。

如果您希望在最后一个小写字母后有多个空格:

start, end = re.search("\s+[a-z]", s[::-1]).span()
a, b = s[:1 - end], s[-start:]

关于Python:在最后一个小写字母处拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29031083/

相关文章:

python - 语法错误看不见的Python 3.4.4

Java设置方式在输出中提供一定数量的空格?

c# - 在 .NET 中进行字符串模板化的好方法是什么?

c - 如何使用c中的库函数验证包含十六进制浮点常量的字符串

python - 汇总数据框以及 python 中的行数

python - USB设备识别

python - 具有相同标签的多个备选方案,只有最后一个获得分配给它的任何东西

javascript - 使用 Jquery 计算特定单词数

java - 删除java源代码中的注释

php - RegEx(PHP 中的 preg_match_all)捕获一系列 <tags containing numbers> 到第一个字母数字字符