Python:最后在较低的cas上拆分字符串

2024-06-28 11:05:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我想出的最好的:

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:]

有没有一种更简单或更像Python的方法?也许是一个可读的正则表达式?在


Tags: 字符串inforif数字locationatus
1条回答
网友
1楼 · 发布于 2024-06-28 11:05:09

关于:

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

ab的结果:

^{pr2}$

这个想法是通过搜索反转的字符串来找到最后一个小写字母的位置。在

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

start, end = re.search("\s+[a-z]", s[::-1]).span()
a, b = s[:1 - end], s[-start:]
网友
2楼 · 发布于 2024-06-28 11:05:09

通过re.split。在

>>> s = 'Arrived at location NEWARK NJ US'
>>> re.split(r'(?<=[a-z])\s+(?=[^a-z]*$)', s)
['Arrived at location', 'NEWARK NJ US']
  • ^{}处理小写字母。在
  • \s+然后匹配以下一个或多个空格字符
  • 仅当
  • 后面是^{}
  • [^a-z]*任何字符,但不是小写字母,零次或多次。在
  • $紧跟在行尾。所以它匹配最后一个小写字母后面的空格。在

^{pr2}$

>>> s = "Arrived at location NEWARK NJ US"
>>> part1, part2 = re.search(r'(.*[a-z])\s+(.*)', s).groups()
>>> part1
'Arrived at location'
>>> part2
'NEWARK NJ US'

在重新分割如果分隔符存在于捕获组中,将返回分隔符。在

>>> part1, part2 = [i for i in re.split(r'(.*[a-z])\s+', s) if not i == '']
>>> part1
'Arrived at location'
>>> part2
'NEWARK NJ US'

相关问题 更多 >