python 解析字符串以获得模式字符串

python parse string for patterned string

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

例如,

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

看看下面的方法是否适合你..
更新数字请求

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 后跟五个 大写 字母或数字。

  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