鱼C论坛

 找回密码
 立即注册
查看: 2146|回复: 6

能否在re.compile的变量里用 正则?

[复制链接]
发表于 2022-7-16 23:06:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
keywords = open(r'C:\Users\z\Downloads\keywords.txt', 'r')
for keyword in keywords:
        pattern = re.compile(rf"{re.escape(keyword.strip())}")

keyword变量里是 不包含正则的词时正常,如下
不但
而且
中国

re.compile(rf"{re.escape(keyword.strip())}")  能把包含“不但”的句子选出来

但如果 变量 keyword里如下,包含正则。re.compile该怎么写才能把“他不但学习好,而且口才也好”匹配到?
不但.*?而且
中国
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-17 05:46:15 From FishC Mobile | 显示全部楼层
看不懂啊,你就直接说你的需求,比如原始文本是啥,想从中提取啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 05:58:35 | 显示全部楼层
本帖最后由 blackantt 于 2022-7-17 06:13 编辑
wp231957 发表于 2022-7-17 05:46
看不懂啊,你就直接说你的需求,比如原始文本是啥,想从中提取啥


keywords.txt 有一些如下模式的汉语连词,
不但 而且
因为 所以

想从文本文件里批量提取 包含 keywords.txt 里连词的句子。
例如,把如下文本中的第一行取出来

他不但学习好,而且口才也好。
他是一个中国人。

----------------------
用split 从keywords.txt的每行中把空格前后的部分关键词分出来,再在 re.compile的模板里组装。有点麻烦,我是说能不能把 正则放在变量里。比如
不但.*?而且

然后在 re.compile中用,能行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 06:15:25 | 显示全部楼层
blackantt 发表于 2022-7-17 05:58
keywords.txt 有一些如下模式的汉语连词,
不但 而且
因为 所以

是这个意思吗???
import re

with  open("wp.txt","r",encoding="utf-8") as f:
    for x in f:
        pattern = re.compile(".*不但.*而且.*")
        if pattern.findall(x):
            print(x,end="")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 07:45:20 | 显示全部楼层
本帖最后由 blackantt 于 2022-7-17 07:57 编辑
wp231957 发表于 2022-7-17 06:15
是这个意思吗???


是的。 但是 “不但 而且”这种连词有若干个,所以要放入 一个文件里,要命的是有2种行(含空格的,不含空格的)
keywords.txt
----------------------
不但 而且
如果
----------------------

我现在用  re.split(' ', keyword)[0], re.split(' ', keyword)[1] 这种拼凑re.compile,然后再抽取。 但re.split只能对"不但 而且“这种有空格分隔符的有用,怎么用split来同时分割 带空格的行和不带空格的行呢,要求:同时遇到不带空格的行就把它当keyword)[0]来输出呢?


实在不行,我的笨办法就是把 keywords.txt 分成2种, 带空格的,不带空格的。 分别对应2个程序。 就是太笨了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 08:02:08 From FishC Mobile | 显示全部楼层
blackantt 发表于 2022-7-17 07:45
是的。 但是 “不但 而且”这种连词有若干个,所以要放入 一个文件里,要命的是有2种行(含空格的,不含 ...

相同问题没必要发两个帖子的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 08:06:37 | 显示全部楼层
wp231957 发表于 2022-7-17 08:02
相同问题没必要发两个帖子的

呃。搞着搞着,需求变了。
正则里套变量可以。  变量里再套正则可能就不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 13:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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