首页 > 解决方案 > 用两个不同的定界符分割字符串的最佳方法,将两个单词大写,只包含一个定界符,然后重新添加两个定界符?

问题描述

我正在编写一个 Python 脚本,它应该能够用两个分隔符分割字符串:'_' 和 '.',将被分隔符分割的两个单词都大写(包含分隔符),然后最后放置分隔符回到他们原来的地方。

所以像:this_is.an_Example string for.You

应该变成:This_Is.An_Example string For.You

现在我有这个:return '_'.join(x.capitalize() for x in re.split('_|\.', str)) + '\n'这并没有真正做到我想要的。

有什么干净的方法吗?谢谢你的帮助!

标签: pythonregexstringdelimiter

解决方案


您可以使用

import re
s = "this_is.an_Example string for.You"
print(re.sub( r'(?<![^_.])[^\W_]+|[^\W_]+(?=[._])', lambda x: x.group().capitalize(), s))
# => This_Is.An_Example string For.You

请参阅Python 演示正则表达式演示

图案细节

  • (?<![^_.])[^\W_]+- 1 个或多个数字或字母 ( [^\W_]+),前面紧跟_, 或., 或字符串开头
  • |- 或者
  • [^\W_]+(?=[._])- 1 个或多个数字或字母 ( [^\W_]+),紧随其后的是_, 或., 或字符串结尾。

推荐阅读