我試圖使用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