python有没有一种特殊的方法可以在不使用分隔符的情况下拆分字符串,只使用大写字母?

python有没有一种特殊的方法可以在不使用分隔符的情况下拆分字符串,只使用大写字母?,python,split,delimiter,Python,Split,Delimiter,我在一个文本文件中有很多单词,每个单词之间没有任何分隔符,但我们可以区分不同的单词,因为每个单词都以大写字母开头。我想提取所有单词并将它们存储在列表中:我的python脚本: words = '' with open("words.txt",'r') as mess: for l in mess.read(): if l.isupper(): words += ','+l else: words += l w

我在一个文本文件中有很多单词,每个单词之间没有任何分隔符,但我们可以区分不同的单词,因为每个单词都以大写字母开头。我想提取所有单词并将它们存储在列表中:我的python脚本:

words = ''
with open("words.txt",'r') as mess:
    for l in mess.read():
        if l.isupper():
            words += ','+l
        else:
            words += l
words = [word.strip() for word in words.split(',') if word]
print(words)
输出:

['Apple', 'Banana', 'Grape', 'Kiwi', 'Raspberry', 'Pineapple', 'Orange', 'Watermelon', 'Mango', 'Leechee', 'Coconut', 'Grapefruit', 'Blueberry', 'Pear', 'Passionfruit']
在words.txt内部(注意有换行符,这只是实际文本的一个示例):

我的代码运行得很好,但我想知道是否有一种特殊的方法python可以在不使用分隔符的情况下拆分文本,只使用大写字母。
如果没有,有人能告诉我更实用的方法吗?

使用正则表达式:

import re
test = 'HelloWorldExample'
r_capital = re.compile(r'[A-Z][a-z]*')
r_capital.findall(test) # ['Hello', 'World', 'Example']

当您多次使用正则表达式时,即在大量输入行上迭代时,编译正则表达式将加快执行速度。

使用自python 3.6以来的新f字符串,您可以使用

words=“”.join([f“{s}”如果s.isupper()或者s代表yorufile中的s.read()如果s.strip()).split(“”[1:]
这是我尝试的最终版本,但随着我的继续,它变得越来越丑陋


(很抱歉在删除帖子和犯大量错误时胡闹)

这能回答你的问题吗?当您多次使用正则表达式时,即在大量输入行上迭代时,编译正则表达式将加快执行速度。您的意思是什么?这实际上只是一行代码。编译表达式是可选的,您也可以像
re.findall(r'[A-Z][A-Z]*',test)
那样调用它。我知道这不是真正的“python代码”,但正则表达式的字符串操作和搜索要容易得多,所以基本使用regexen是程序员工具箱中的一项很好的技能。但是regex要快得多
import re
test = 'HelloWorldExample'
r_capital = re.compile(r'[A-Z][a-z]*')
r_capital.findall(test) # ['Hello', 'World', 'Example']