用于图案化字符串的python解析字符串

时间:2017-09-29 18:41:26

标签: python pandas parsing dataframe delimiter

我需要解析包含长字符串的Pandas DataFrame列,我需要在PXXXXX的特定模式后找到ID。 id始终以'P'开头,后跟5个随机字符或数字,即PXYZAB。

例如,

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

2 个答案:

答案 0 :(得分: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后跟五个大写字母或数字。

答案 1 :(得分: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