gpt4 book ai didi

python - 如果我的模式来自另一个字符串,如何用 regex() 指示原始字符串?

转载 作者:行者123 更新时间:2023-12-01 00:36:33 26 4
gpt4 key购买 nike

我有一个 csv 表,我可以从中获取正则表达式模式,例如\bconden
问题:我无法向 python 指定这是一个原始字符串
当它来自字符串时,如何将 r 放在模式之前?

import re
a = 'de la matière condensée'
fromcsv = '\bconden'
print(re.search('r' + fromcsv, a))

结果是

最佳答案

您可以使用下面的 str_to_raw 函数从已声明的纯字符串变量中生成原始字符串:

import re
a = 'de la matière condensée'
pattern = '\bconden'

escape_dict = {
'\a': r'\a',
'\b': r'\b',
'\c': r'\c',
'\f': r'\f',
'\n': r'\n',
'\r': r'\r',
'\t': r'\t',
'\v': r'\v',
'\'': r'\'',
'\"': r'\"',
'\0': r'\0',
'\1': r'\1',
'\2': r'\2',
'\3': r'\3',
'\4': r'\4',
'\5': r'\5',
'\6': r'\6',
'\7': r'\7',
'\8': r'\8',
'\9': r'\9'
}

def str_to_raw(s):
return r''.join(escape_dict.get(c, c) for c in s)

print(re.search(r'\bconden', a))
print(re.search(str_to_raw(pattern), a))

输出:

<re.Match object; span=(14, 20), match='conden'>
<re.Match object; span=(14, 20), match='conden'>

注意:我从 this page 获取了 escape_dict .

关于python - 如果我的模式来自另一个字符串,如何用 regex() 指示原始字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57714538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com