大家好,所以我试图捕获以数字开头的任何内容,但由于某种原因,正则表达式没有捕获我表中的条目:
df
a
0 Shamrock1-A
1 Shamrock2-B
2
3 Q217
4 1YR
5 2YR
我试图用以下正则表达式捕获Q217,1YR和2YR:
(Q|^\d)
但是我的正则表达式只是捕获Q217。任何帮助表示赞赏。
答案 0 :(得分:0)
df = pd.DataFrame({'a': ['Shamrock1-A', 'Shamrock2-B', 'Q217', '1YR', '2YR']})
a
0 Shamrock1-A
1 Shamrock2-B
2 Q217
3 1YR
4 2YR
df.a.str.extract('(^(Q|\d).*)')[0]
0 NaN
1 NaN
2 Q217
3 1YR
4 2YR
答案 1 :(得分:0)
这将抓住你的所有例子,并且更多地假设大写字母。如果需要,可以很容易地添加小写。
import re
text = '''
df
a
0 Shamrock1-A
1 Shamrock2-B
2
3 Q217
4 1YR
5 2YR
'''
print( re.findall( '[A-Z]+[0-9]+|[0-9]+[A-Z]+', text ) )
答案 2 :(得分:0)
你的正则表达式工作正常,但你必须使用str.match
即
df[df['a'].str.match(r'Q|^\d')==True] # == True because of presence nan values
输出:
a 3 Q217 4 1YR 5 2YR