我有以下脚本,该脚本用于拉出括号内的记录ID。这也意味着忽略括号内的其他详细信息。我遇到了一个类似这样的详细信息(YYYY-DD)的问题,其中我不确定如何排除它,因为我需要保留其他包含“-”的记录ID。该脚本还从重要的结尾开始。
脚本:
df1['Doc ID'] = df['Folder Path'].str.extract('.*\((?!Data Only)(.*)\).*',expand=True)
我尝试添加:
[^\d\d\d\d-\d\d], (?!date_format) and neither work
请看第三个实例,这是我的问题所在:
Folder Path Doc ID
1 report/global/(Data Only)/admin (245) 245 #245 is kept, 'Data Only' successfully ignored
2 report/regional(PRSP)/tech/(121,130,505 - RETIRED)/2018 121,130,505 - RETIRED #successfully ignores (PRSP)
3 global/report/admin (505)/(2018-03) 2018-03 #I cannot figure out how to avoid 2018-03 or any YYYY-DD sequence and only grab 505 in this instance
答案 0 :(得分:1)
如果要从右开始,则应在RE中表达出来。我建议以此作为起点:
df1['Doc ID'] = df['Folder Path'].str.extract('\(([^(]*?)\)[^)]*$',expand=True)
但是这会遇到匹配日期的问题,因此让我们为其插入一个子模式:
df1['Doc ID'] = df['Folder Path'].str.extract('\(([^(]*?)\)[^)]*(?:\(\d{4}-\d{2}\))?[^)]*$',expand=True)