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

2024-09-28 05:19:05 发布

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

我有一个csv表,从中可以得到regex模式,例如\bconden
问题:我无法向python指定这是一个原始字符串
当模式来自字符串时,如何将r放在其前面?你知道吗

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

结果是None


Tags: csv字符串importrenonesearch模式de
1条回答
网友
1楼 · 发布于 2024-09-28 05:19:05

您可以使用下面的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。你知道吗

相关问题 更多 >

    热门问题