在Python的正则表达式中,查找所有大写字母的行

3

我正在尝试使用正则表达式找到所有大写的行,目前我尝试了下面这个:

re.findall(r'\b\n|[A-Z]+\b', kaizoku)

目前我的数据库如下:

TRAFALGAR LAW
You shall not be the pirate king.
MONKEY D LUFFY
Now!
DOFLAMINGO'S UNDERLINGS:
Noooooo!

I want it to return

TRAFALGAR LAW
MONKEY D LUFFY
DOFLAMINGO'S UNDERLINGS:

但它返回了其他东西。 (具体来说是这个:)
TRAFALGAR
LAW
Y
MONKEY
D
LUFFY
N
DOFLAMINGO'
S
UNDERLINGS:
N

编辑 到目前为止,我认为最符合答案的是@Jan的回答。

rx = re.compile(r"^([A-Z ':]+$)\b", re.M)
rx.findall(string)

编辑2 发现了问题,谢谢!


什么是“something else”? - glibdud
DOFLAMINGO'S 中有一个引号... 请详细输出和期望的输出([mcve])。 - Jean-François Fabre
可能是重复问题:https://dev59.com/V3E95IYBdhLWcg3wadKq 同时没有付出努力,当像我这样对正则表达式一无所知的人在不到一分钟内就能找到它。 - Mr. T
@Piinthesky:我尝试了那些解决方案,但对我来说没有任何返回结果。 - Sunny League
3个回答

5

简介

不需要使用正则表达式,在Python中有一个方法叫做isupper()

如果字符串中所有大小写字母[4]均为大写并且至少存在一个大小写字母,则返回True,否则返回False。

[4] 大小写字母是具有“Lu”(字母,大写)、“Ll”(字母,小写)或“Lt”(字母,标题)之一的一般类别属性的字符。


代码

在此处查看使用的代码

a = [
    "TRAFALGAR LAW",
    "You shall not be the pirate king.",
    "MONKEY D LUFFY",
    "Now!",
    "DOFLAMINGO'S UNDERLINGS:",
    "Noooooo!",
]

for s in a:
    print s.isupper()

结果

True
False
True
False
True
False

4

这里提供给您

import re

string = """TRAFALGAR LAW
You shall not be the pirate king.
MONKEY D LUFFY
Now!
DOFLAMINGO'S UNDERLINGS:
Noooooo!
"""

rx = re.compile(r"^([A-Z ':]+$)", re.M)

UPPERCASE = [line for line in string.split("\n") if rx.match(line)]
print(UPPERCASE)

或者:

rx = re.compile(r"^([A-Z ':]+$)", re.M)

UPPERCASE = rx.findall(string)
print(UPPERCASE)

两者都会产生结果。

['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]

@Jean-FrançoisFabre:非常正确,感谢您的指出。已更新。 - Jan
@Jean-FrançoisFabre:谢谢,但是如果一行变成了A SERVANT,它就不太好了。 - Sunny League
@Jan,': 的意思是什么? - zewill

2
您可以使用[A-Z\W]来检查任何大写字母以及非字母数字字符:
import re
s = ["TRAFALGAR LAW", "You shall not be the pirate king.", "MONKEY D LUFFY", "Now!", "DOFLAMINGO'S UNDERLINGS:", "Noooooo!"]
new_s = [i for i in s if re.findall('^[A-Z\d_\W]+$', i)]

输出:

['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]

[A-Z\d_\W] 不是更好吗?因为它包括数字和下划线(如果它们被使用的话)。 - ctwheels

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接