python - 无法通过字符修改正确解析字符串
问题描述
我遇到了一个问题,我的 Python 代码没有正确返回一个函数调用,该函数调用旨在在每个大写字母之前添加一个下划线字符,我不确定我哪里出错了。对于输出,只有字符串中的“courseID”字被触及,而其他两个字没有。
我认为循环遍历单词中的字母,寻找大写字母会起作用,但似乎并非如此。有人可以让我知道我的代码哪里出错了吗?
def parse_variables(string):
new_string=''
for letter in string:
if letter.isupper():
pos=string.index(letter)
parsed_string=string[:pos] + '_' + string[pos:]
new_string=''.join(parsed_string+letter)
else:
new_string=''.join(letter)
# new_string=''.join(letter)
return new_string.lower()
parse_variables("courseID pathID apiID")
当前输出为单个小写字母d
,预期输出应为course_id path_id api_id
.
解决方案
我认为这里的正则表达式解决方案更容易理解。这需要以大写字母结尾的单词并添加下划线并将它们变为小写
import re
s = "courseID pathID apiID exampleABC DEF"
def underscore_lower(match):
return "_" + match.group(1).lower()
pat = re.compile(r'(?<=[^A-Z\s])([A-Z]+)\b')
print(pat.sub(underscore_lower, s))
# course_id path_id api_id example_abc DEF
您可能必须使用该正则表达式才能使其完全按照您的意愿行事。目前,它在单词的末尾使用大写字母,前面有一个既不是大写字母也不是空格的字符。然后它将这些字母变为小写,并在它们前面添加一个下划线。
推荐阅读
- java - 使用其他方法的 HashMap?
- python - 提取csv文件的多个多边形坐标
- java - 字符串包含除一个字符以外的任何字符
- xml - 在 XML 中,空元素和省略元素有什么区别?
- html - 在wordpress中将按钮放置在全宽和全高图像上
- ruby-on-rails - 为什么我在 number_to_currency 中的区域设置不起作用?
- sql-server - 验证 SQL 的向后兼容性 - SQL Server
- sql - 协助 Oracle 中的 SQL 查询
- python - ModuleNotFoundError 与 pytest
- php - 添加 Woocommerce 产品价格(+ 货币)并在页面中添加到购物车