说我有:
myString = 'myPERLPythonJavaScriptJavaTextSample'
我想将其拆分为:
['my', 'PERL', 'Python', 'Java', 'Script', 'Java', 'Text', 'Sample']
这样做的PYTHONIC方式是什么?
我应该更清楚:-(。这是我追求的另一个例子:
myString2 = [' myAbcDEFGhijklMNOP']
应该返回:
[&#39;我的&#39;,&#39; Abc&#39;,&#39; DEF&#39;,&#39; Ghijkl&#39;,&#39; MNOP&#39;] < / p>
&#39; ... ... DEFGh&#39;成为&#39; ....&#39;,&#39; DEF&#39;,&#39; Gh ...&#39;因为&#39; G&#39;是大写字母串的最后一个字符&#39; DEFG&#39;。也就是说,如果有多个连续的大写字母,我们会在倒数第二个大写字母处分开。这不适用于最后一个子字符串:return&#39; MNOP&#39;原样。
答案 0 :(得分:1)
如评论中所述,您无法准确地了解这一点,但您可以接近并对其进行后处理:
myString = 'myPERLPythonJavaScriptJavaTextSample'
ll = []
val = ''
for ch in myString:
if ch.isupper():
ll.append(val)
val = ''
val += ch
print ll
>> ['my', 'P', 'E', 'R', 'L', 'Python', 'Java', 'Script', 'Java', 'Text']
答案 1 :(得分:1)
尝试使用正则表达式:
import re
myString = 'myPERLPythonJavaScriptJavaTextSample'
regex = '([a-z]+)(?=[A-Z])|([A-Z][a-z]+)'
ll = filter(None, re.split(regex, myString))
print ll
返回: ['my','PERL','Python','Java','Script','Java','Text','Sample']
答案 2 :(得分:1)
使用正则表达式将单词与空格分开,然后拆分:
import re
myString = 'myPERLPythonJavaScriptJavaTextSample'
myString = re.sub(r'((?<=[a-z])[A-Z]|(?<!\A)[A-Z](?=[a-z]))', r' \1', myString)
result = myString.split()
print result
返回:['my','PERL','Python','Java','Script','Java','Text','Sample']