从字符串中提取所有大写单词

时间:2018-09-07 19:23:29

标签: python string list uppercase

从像这样的字符串"A B c de F G A"中,我想得到以下列表:["A B", "F G A"]。这意味着,我需要获取所有大写单词的序列。

我尝试过这样的事情:

text = "A B c de F G A"
result = []
for i, word in enumerate(text.split()):
    if word[0].isupper():
        s = ""
        while word[0].isupper():

            s += word
            i += 1
            word = text[i]

        result.append(s)

但是会产生以下输出:['A', 'BB', 'F', 'G', 'A']

我想是因为您不能仅通过增加i来跳过列表元素。如何避免这种情况并获得正确的输出?

4 个答案:

答案 0 :(得分:7)

您可以使用@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_audio); mediaPlayer = MediaPlayer.create(this,R.raw.oldcar); mediaPlayer.start(); } public void goBack(View view){ //mediaPlayer.pause(); Log.i("info","ending audio activity"); finish(); }

itertools.groupby

输出:

import itertools
s = "A B c de F G A"
new_s = [' '.join(b) for a, b in itertools.groupby(s.split(), key=str.isupper) if a]

答案 1 :(得分:1)

您可以使用re.split用正则表达式分割字符串。

import re

def get_upper_sequences(s):
    return re.split(r'\s+[a-z][a-z\s]*', s)

示例

>>> get_upper_sequences( "A B c de F G A")
['A B', 'F G A']

答案 2 :(得分:0)

下面的示例将从字符串中提取所有紧随其后的大写单词:

10.233.2.225:3000

答案 3 :(得分:0)

这是没有itertoolsre的解决方案:

def findTitles(text):
    filtered = " ".join([x if x.istitle() else " " for x in text.split()])
    return [y.strip() for y in filtered.split("  ") if y]

print(findTitles(text="A B c de F G A"))
#['A B', 'F G A']

print(findTitles(text="A Bbb c de F G A"))
#['A Bbb', 'F G A']