【问题标题】:Extracting only the uppercase strings using Python [closed]使用 Python 仅提取大写字符串 [关闭]
【发布时间】:2021-11-11 18:48:06
【问题描述】:

我有字符串:

S1 = "ABC is the text"
I need output as "ABC" only

另一个例子:

S2="LTE Is Getting Evolved"
output: LTE

InputString =
"ACK ACKnowledgment
ACRRAMN Artificial
ANR123 Automatic NR Relations
124APN Access Point Name
A12RQ Automatic Repeat reQuest
BP Bandwidth Part XZ"

output:

ACK
ACRRAMN
ANR123
NR
124APN
A12RQ
BP
XZ

情况是我只需要大写字符串而不是大写作为字符串的一部分。

【问题讨论】:

  • 如果里面有多个这样的字符串怎么办?
  • 你的意思是第一个上面的字符串吗?你能再举一个错误的例子吗?
  • 到目前为止你尝试了什么?
  • “LTE123 Is Getting Evolved”的输出应该是什么?
  • 你试过什么?您能否展示您的代码以供讨论?

标签: python regex string filtering


【解决方案1】:

您需要将字符串拆分为标记,然后像这样使用 isupper:

S1 = 'ABC is the text'

for t in S1.split():
  if t.isupper():
    print(t)

【讨论】:

  • 你不需要 .split(),字符串已经是可迭代的。您的代码仍然有效
  • @JamesMcClay 这个问题暗示(尽管 OP 不是很清楚)他们想要字符串中的完全大写的单词,所以你必须以某种方式对其进行标记
  • @JamesMcClay 字符串确实是逐个字符可迭代的,但如果我对 OP 问题的理解是正确的,那并没有真正的帮助。我引用“情况是我只需要大写字符串而不是大写作为字符串的一部分”
【解决方案2】:

您可以使用str.splitstr.isupper 获得这些带有条件理解的标记:

[t for t in S2.split() if t.isupper()]
# ['LTE'] 

【讨论】:

  • 这个答案有什么问题?没错。
【解决方案3】:

你可以这样做:

def get_upper_words_from(s):
    results = []
    for word in s.split(" "):
        if word.isupper():
            results.append(word)
    return results

结果是所有找到的单词的列表。如果您更喜欢正则表达式:

import re
s = "My string HERE"
pattern = r"\b[A-Z]+\b"
print(re.findall(pattern, s))

编辑:删除分号和简化条件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 2019-04-20
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多