python中带%

2024-09-30 01:36:30 发布

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

一般来说,我对正则表达式不太熟悉,但是我找不到关于%字符的特殊规则。你知道吗

我做了以下工作:

line = parseFileHandle.readline()
while 1:
    line = parseFileHandle.readline()
    if not line:
        break
    # test for string '%%?'
    match = re.match("%%?", line)
    if match:
        print (line)

但是,它打印出以%字符开头的任何行。那不是我想要的。你知道吗

最后我想找出文件名(我的文件.tex)在这个表格的文件里

%%?  file: myfile.tex

Tags: 文件testforreadlinestringif规则match
3条回答

.startswith()可能是这种情况下最好的函数。这里不需要正则表达式。你知道吗

而且,看起来您正在以一种稍微奇怪的方式读取文件。通常的语法是:

with open('filename.txt', 'r') as handle:
    for line in handle:
        if line.startswith('%%?'):
            print(line)

从列表中提取文件名可以使用正则表达式执行以下操作:

exp = re.compile("^%%\?  file: ([^ \n]+)$")
with open('filename.txt', 'r') as myfile:
    for line in myfile:
        match = exp.match(line)
        if match:
            print(match.group(1))

正如其他人所指出的,您需要在最初的尝试中转义?字符,因为它在正则表达式中有特殊的含义。你知道吗

问题不在于%。它的?有特殊的含义:它使第二个%成为可选的。因此您的正则表达式将匹配%%%。你知道吗

以下正则表达式应该起作用:

match = re.match("%%[?]", line)

如果要在行首搜索%%?,则不需要正则表达式。以下将实现同样的效果:

if line.startswith("%%?"):

相关问题 更多 >

    热门问题