2017-09-29 54 views
1

我需要解析通過包含長字符串的Pandas DataFrame列,我需要找到一個特定的模式PXXXXX後的ID。 ID總是開始'P',隨後是5個隨機字符或數字,即PXYZAB。python解析字符串模式字符串

例如,

columnName 
    |||||||||||||||||||||Fefelajfeaflekj;alfkjeaf_PXXXXX 
    ||||XYz<,,,ffeals89fes|PXXXXX_fewalfeslfesfsfjfes 
    wh;lajkfeklaflkejasefj;lase|||||xxxx_PXXXX|wha;felkjasf 

回答

1
import pandas as pd 

    df = read_excel(c:\\......) 
    df.head() 

輸出

String 
    |||||fe;jlkajf;lkeja;fji_PXXXX 
    ;ljf;oeiaf;ifs[op[[pof[PXXXX,;lkjf;lej;afle 
    [xyzPXXXX] 

解決方案

df['patterns'] = df['String'].str.findall('P[A-Za-z0-9]{5}') 

輸出

String           patterns 
    |||||fe;jlkajf;lkeja;fji_PXXXX     PXXXXX 
    ;ljf;oeiaf;ifs[op[[pof[PXXXX,;lkjf;lej;afle  PXXXXX 
    [xyzPXXXX]          PXXXXX 
1

看看下面爲你的作品..
更新了數字請求

import re                      

s='||||XYz<,,,ffeals89fes|PUVWXY_fewalfeslfesfsfjfes\nwh;lajkfeklaflkejasefj;lase|||||xxxx_PA1CDE|wha;felkjasf'

colIdx='Col Header Name in Data Frame where the string is' #OR just the 1 if it is 2nd column that you want to check and there are no headers in your data frame. 
ids=[m for idx, row in df.iterrows() for m in re.findall('P[A-Z0-9]{5}',row[colIdx])]:                

輸出

PUVWXY 
PA1CDE 

注意,這僅捕獲P隨後5個資本字母或數字。

+0

我將如何修改這個代碼納入到允許Captial字母和數字? –

+0

編輯以允許數字。 – kaza

+0

請問如何格式化s變量以使其在DataFrame中的一列顯示並讓它遍歷行? –