我试图使用Python re.findall匹配字符串下列条件的字符串:蟒蛇的findall以匹配都大写
contain all uppercase letters
have numbers present sometimes
我试图
ab_list = re.findall(r'([A-Z]+)(\.\d+)', text)
但这并不返回任何东西。
我试图使用Python re.findall匹配字符串下列条件的字符串:蟒蛇的findall以匹配都大写
contain all uppercase letters
have numbers present sometimes
我试图
ab_list = re.findall(r'([A-Z]+)(\.\d+)', text)
但这并不返回任何东西。
你可以试试这个:
import re
s = ["ALL CAPITALS ARE ON", "Some lower, soMe not", "AGAIN, WITH PUNCTIONATION."]
final_data = [i for i in s if re.findall("^[A-Z0-9\W]+$", i)]
输出:
如果你正在努力寻找单词都大写:
s = ["NOT (LOWER)", "Some lower, soMe not", "AGAIN, WITH PUNCTIONATION.", "young 10 (MODY10)"]
final_data = [b for b in [re.findall("(?<=\().*?(?=\))", i) for i in s] if b and re.findall("^[A-Z0-9\W]+$", b[0])]
final_data = [b for b in [re.findall("\(([A-Z0-9\W])\)", i) for i in s] if b]
输出:
[['LOWER'], ['MODY10']]
如果你有一个长的字符串:
s = 'NOT (LOWER)Some lower, soMe notAGAIN, WITH PUNCTIONATION.young 10 (MODY10)'
final_strings = re.findall("\(([A-Z0-9\W]+)\)", s)
输出:
['LOWER', 'MODY10']
谢谢,但它实际上有时是数字,而不是标点 – user6792790
@ user6792790请看我最近的编辑。 – Ajax1234
我正试图从“青少年10(MODY10)”中获得“MODY10”,这是不起作用的。 – user6792790
这会找到只包含大写字母,数字和空格的字符串。
re.findall('^[A-Z0-9 ]+$', text)
这将返回一个包含字符串的列表,如果匹配,否则返回一个空列表。但是,如果您只想检测整个字符串是否匹配,则使用re.match
而不是re.findall
可能会更直接。这取决于你最终想做什么。
如果你想应该找到个人的话,你可能会想:
re.findall('([A-Z0-9]+)', text)
您当前的模式似乎也试图匹配像'ABC.123','XYZ.4'等字符串(它所做的)。你确定你的条件合适吗?也许你应该展示一些示例输入和输出。 – ekhumoro