如何从数据帧中断开包含字符串模式的行

2024-10-02 20:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

假设Python中有一个如下所示的数据帧:

          TEXT               Number    
         ((<s>, <s>), ABC)   0.161681
         ((<s>, ABC), DEF)   0.472973
         ((ABC, DEF), DEF)   0.131635
         ((DEF, DEF), DEF)   0.166667
         ((DEF, DEF), DEF)   0.976190
         ((DEF, DEF), XYZ)   0.150969
        ((DEF, XYZ), </s>)   0.092511
       ((XYZ, </s>), </s>)   1.000000
         ((<s>, <s>), ABC)   0.161681
         ((<s>, ABC), GHI)  0.472973
         ((ABC, GHI), GHI)  0.131635
         ((DEF, GHI), GHI)  0.166667
         ((DEF, GHI), GHI)  0.976190
         ((GHI, GHI), XYZ)  0.150969
        ((GHI, XYZ), </s>)  0.092511
       ((XYZ, </s>), </s>)  1.000000
         ((<s>, <s>), ABC)  0.161681
         ((<s>, ABC), JKL)  0.472973
         ((ABC, JKL), JKL)  0.131635
         ((JKL, JKL), JKL)  0.166667
         ((JKL, JKL), JKL)  0.976190
         ((JKL, JKL), XYZ)  0.150969
        ((JKL, XYZ), </s>)  0.092511
       ((XYZ, </s>), </s>)  1.000000

如何打断以((XYZ“<;”)结尾的行/s“>&中尉/s“>;”)输入字符串模式并存储另一个变量例如,输出应为:

((<s>, <s>), ABC)    0.161681
((<s>, ABC), DEF)    0.472973
((ABC, DEF), DEF)    0.131635
((DEF, DEF), DEF)    0.166667
((DEF, DEF), DEF)    0.976190
((DEF, DEF), XYZ)    0.150969
((DEF, XYZ), </s>)   0.092511
((XYZ, </s>), </s>)   0.11111

((<s>, <s>), ABC)    0.161681
((<s>, ABC), GHI)    0.472973
((ABC, GHI), GHI)    0.131635
((DEF, GHI), GHI)    0.166667
((DEF, GHI), GHI)    0.976190
((GHI, GHI), XYZ)    0.150969
((GHI, XYZ), </s>)   0.092511
((XYZ, </s>), </s>)  0.112586


((<s>, <s>), ABC)     0.161681
((<s>, ABC), JKL)     0.472973
((ABC, JKL), JKL)     0.131635
((JKL, JKL), JKL)     0.166667
((JKL, JKL), JKL)     0.976190
((JKL, JKL), XYZ)     0.150969
((JKL, XYZ), </s>)    0.092511
((XYZ, </s>), </s>)   1.000000

Tags: 数据字符串textltgtnumberdef结尾
1条回答
网友
1楼 · 发布于 2024-10-02 20:35:24

下面是一个仅获取行信息的示例,其中
捕获组1包含文本字段,
捕获组2包含编号字段

有了这些信息,你可以做任何你想做的事。
替换为格式化数据,例如:
$1 $2\r\n\r\n

(?m)^[^\S\r\n]*(\([^\S\r\n]*\([^\S\r\n]*[A-Z]+[^\S\r\n]*,[^\S\r\n]*</s>[^\S\r\n]*\)[^\S\r\n]*,[^\S\r\n]*</s>\))[^\S\r\n]+((?:\d+(?:\.\d*)?|\.\d+))[^\S\r\n]*\s*

可读版本

 (?m)                                      # Multi-line mode
 ^                                         # BOL
 [^\S\r\n]*                                # Horizontal whitespace trim

 (                                         # (1 start), Text
      \( [^\S\r\n]* 
      \( [^\S\r\n]* 
      [A-Z]+ 
      [^\S\r\n]* , [^\S\r\n]* 
      </s> [^\S\r\n]* 
      \)
      [^\S\r\n]* , [^\S\r\n]* 
      </s> 
      \)
 )                                         # (1 end)
 [^\S\r\n]+                                # Horizontal whitespace trim, and required separator
 (                                         # (2 start), Number
      (?:
           \d+ 
           (?: \. \d* )?
        |  \. \d+ 
      )
 )                                         # (2 end)
 [^\S\r\n]*                                # Horizontal whitespace trim
 \s*                                       # Whitespace trim (include newlines)

相关问题 更多 >