如何在没有正则表达式的情况下使用for-loop更改字符串。
示例:(python 2.7.1)
import re
trans = lambda src: re.sub("([A-Z])", lambda m:"_"+m.group().lower(), src, flags=0)
print(trans("helloWorld"))
我希望结果为:
hello_world
我想从正则表达式版本更改为for-loop版本。
条件
答案 0 :(得分:1)
def change(string):
for letter in string:
if letter.isupper():
yield '_{}'.format(letter.lower())
else:
yield letter
print ''.join(change("helloWorld"))
如果你想把它放在一行:
print ''.join(letter.isupper() and '_{}'.format(letter.lower()) or letter for letter in 'helloWorld')
答案 1 :(得分:0)
您可以使用list comprehension
(即一个循环播放)来实现它:
>>> my_string = "helloWorld"
>>> ''.join(['_{}'.format(s.lower()) if s.isupper() else s for s in my_string])
'hello_world'
<强>解释强>
列表只是一个字符列表。迭代每个char并使用isupper()
fuct检查它是否为大写字符。如果是,请使用_<lower-case>
func。
lower()
上面列表理解的结果是:['h', 'e', 'l', 'l', 'o', '_w', 'o', 'r', 'l', 'd']
。加入列表以查找您的字符串,即hello_world