掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 619|回复: 3

[求助] 请教python中一个正则表达式的用法

[复制链接]
  • TA的每日心情
    开心
    2020-11-30 19:14
  • 签到天数: 249 天

    [LV.8]以坛为家I

    发表于 2022-8-7 21:45:36 | 显示全部楼层 |阅读模式
    今天遇到一个python中使用re模块进行正则搜索的案例,代码里有一句看不懂,请知道的朋友不吝赐教!+ x) e1 }3 k' R+ t3 o
    * q! v! s! w, g1 U3 ]4 X% {+ g0 p
    sentences = re.split("(?<=[" + "".join(sent_separator) + "])\s*", text)3 [, ^' b5 |3 [4 O3 }: w3 a9 z

    . \  D3 j" C% E2 T+ _' }想知道,pattern中调用字符串方法是怎么实现的?谢谢!

    该用户从未签到

    发表于 2022-8-7 23:18:22 | 显示全部楼层
    本帖最后由 entropy 于 2022-8-7 23:33 编辑
    / @1 F1 x& g" {
    4 I% V% M* k) M6 e- d"(?<=[" + "".join(sent_separator) + "])\s*"
    : k4 F# d! D6 C3 L5 Z$ j/ e" h% q; F7 S* K
    把三个字符串加起来,中间用到了.join() 方法,把 sent_separator 所有元素连在一起,用 "" 分隔。
    1 g/ g. X# k+ I$ Q/ F/ C1 q0 q( l5 n3 `7 h7 y9 Q
    这种写法不怎么好。建议写成:fr'(?<=[{"".join(sent_separator)}])\s*'

    评分

    1

    查看全部评分

  • TA的每日心情
    开心
    2020-11-30 19:14
  • 签到天数: 249 天

    [LV.8]以坛为家I

     楼主| 发表于 2022-8-10 18:23:29 | 显示全部楼层
    entropy 发表于 2022-8-7 23:18; ]* @( ^  T3 m. A
    "(?
    , s2 |- T2 _2 L0 p
    0 X3 z: h3 H2 A+ D' @1 f9 D
    谢谢回复。我想我知道错哪儿了。您说的是字符串"(?<=["、字符串"".join(sent_separator)和字符串"])\s*"进行拼接,得到新的字符串是吧。我先入为主地认为pattern是用冒号包围的,所以直接就将最两边的双引号考虑在外了,所以怎么也想不通" + "".join(sent_separator) + "这部分是咋拼接了。太囧了。谢谢最后的建议!优雅很多。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2022-9-26 13:55:40 | 显示全部楼层
    本帖最后由 mikeee 于 2022-9-26 14:23 编辑
    6 {! n3 B) q- G7 o- x- ^( ^& _  v( ~! T0 a" e
    那地方也可以写成: fr'(?<={"|".join(sent_separator)})\s*'8 `% p2 L9 W1 [* j" T) o
    ! Y& W2 ~* U2 p. u  p* b7 U
    不过一般情况下分句远不止在sent_separator处断开那么简单。python的话或许可以考虑用 pypi 包 seg-text https://pypi.org/project/seg-text/或类似的包。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-27 07:54 , Processed in 0.045281 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表