【问题标题】:python parse string for patterned stringpython解析字符串以获取模式字符串
【发布时间】:2017-09-29 18:41:26
【问题描述】:

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

例如,

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

【问题讨论】:

    标签: python pandas parsing dataframe delimiter


    【解决方案1】:

    看看下面的内容是否适合你..
    已更新数字请求

    import re                                                                                       
    

    s='||||XYz&lt;,,,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 后跟五个大写 字母或数字。

    【讨论】:

    • 如何修改此代码以合并以允许使用大写字母和数字?
    • 询问如何格式化 s 变量以使其成为 DataFrame 中的一列并让它遍历行会不会太过分?
    • 不确定您的 DataFrame 设置,但您明白了。这将获取整列中所有匹配的id。
    • 我仍在试图找出循环的 ids 试图做什么,即 row[colIdx] 中 colIdx 的值是什么
    • colIdx 是您的数据框列标题。这将从行中返回该列的值
    【解决方案2】:
      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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多