3 回答

TA貢獻1824條經(jīng)驗 獲得超5個贊
我也認為使用re是一種好方法,如果您不必re不惜一切代價使用,那么您可以這樣做:
s = "Bob Rob Smith (L1234567), John Doe (k12345678)"
result = s.replace(')','(').split('(')[1::2]
print(result)
輸出:
['L1234567', 'k12345678']
說明:我想在(and處拆分),但.split方法str只接受一個分隔符,所以我首先替換)為(,然后拆分并得到奇數(shù)元素。此方法適用于以下情況:(和)僅在IDs 周圍使用、s不以 開頭(、s不以 開頭)、任意兩個括號之間至少有一個字符。

TA貢獻1951條經(jīng)驗 獲得超3個贊
對我來說,這種RegEx方法似乎是最好的方法。
假設您不確切知道您的 ID 有多少位數(shù)字(引號:后跟幾個數(shù)字),您可以通過整個字符串并捕獲括號內(nèi)的內(nèi)容:
s = "Bob Rob Smith (L1234567), John Doe (k12345678)"
res = []
word = ''
open = False
for x in s:
if x == '(':
open = True
continue
if x == ')':
open = False
res.append(word)
word = ''
if open:
word += x
print(res)
輸出:
['L1234567','k12345678']

TA貢獻1821條經(jīng)驗 獲得超6個贊
您可以拆分),
并從拆分列表中的每個元素中取出最后 8 個字符,但正則表達式是正確的方法
[s[-8:] for s in mystring[:-1].split('),')]
添加回答
舉報