3 回答
TA贡献1824条经验 获得超5个赞
我也认为使用re是一种好方法,如果您不必re不惜一切代价使用,那么您可以这样做:
s = "Bob Rob Smith (L1234567), John Doe (k12345678)"
result = s.replace(')','(').split('(')[1::2]
print(result)
输出:
['L1234567', 'k12345678']
说明:我想在(and处拆分),但.split方法str只接受一个分隔符,所以我首先替换)为(,然后拆分并得到奇数元素。此方法适用于以下情况:(和)仅在IDs 周围使用、s不以 开头(、s不以 开头)、任意两个括号之间至少有一个字符。
TA贡献1951条经验 获得超3个赞
对我来说,这种RegEx方法似乎是最好的方法。
假设您不确切知道您的 ID 有多少位数字(引号:后跟几个数字),您可以通过整个字符串并捕获括号内的内容:
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条经验 获得超6个赞
您可以拆分),
并从拆分列表中的每个元素中取出最后 8 个字符,但正则表达式是正确的方法
[s[-8:] for s in mystring[:-1].split('),')]
添加回答
举报