在这里,我试图得到一个句子中所有连续的大写字母字符串。我试过以下方法,输出为'LJ'
我还没弄明白为什么它不添加STRR
和HLLJ
,但它只添加LJ
。它是否假定[""]
为字符串。你知道吗
reduce(lambda x ,y : x[-1] + (y) if y.isupper() or y.isspace() else x,"STRR hello HLLJ",[""])
我的意见是:
STRR hello HLLJ
我希望得到一个输出["STRR","HLLJ"]
测试用例:
ABCD AAA lkjl JJJJJJ. Here it should give ["ABCD AAA","JJJJJJ"]
感谢您的帮助。你知道吗
使用Reduce我终于想到了这一点,但效率不高:
reduce(lambda x, y : x[0:len(x)-1] + [x[-1]+y] if y.isupper() or y.isspace() else x + [""] if not x[-1].strip() is "" else x,"STRR Hello HLLJ", [""])
在字符串中查找模式是^{} module 的作用:
或者,如果不想包含另一个单词的大写字母,可以使用word boundary anchors排除它们:
警告:这只查找ASCII字母。你知道吗
为了完整起见,使用^{} 的另一个解决方案是:
使用正则表达式和^{}
说明:
[A-Z\s]+
匹配一个或多个后续大写字母或空格findall
返回所有匹配项的列表。你知道吗相关问题 更多 >
编程相关推荐