手术室步行无法使用通过'匹配组(0).encode('stringescape')'

2024-09-27 23:16:35 发布

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

我在用手术室步行搜索特定目录中的文件。在

这是测试代码,它不会做它应该做的:

import os, re

cwd = os.getcwd() 
directory= 'Box II'
dirpattern = re.compile(r'^.*?\\'+directory+'.*?', re.M)

for root, dirs, files in os.walk(os.path.abspath(cwd)):

    if dirpattern.search(root):
        match = dirpattern.search(root)
        match = match.group(0).encode('string-escape')

print match '''OUTPUT = D:\\dir1\\dir2\\dir3'''

for roots, dirss, filess in os.walk(match):
print filess '''OUPUT = gives nothing'''

如果我像这样在第二个循环中输入dirname

^{pr2}$

我得到了正确的输出。在

dirname有空格。在

我键入的内容正是第一个循环中打印出来的匹配内容。为什么不管用?在

是匹配组(0)不是字符串?在

如果我这样做:

import os, re

cwd = os.getcwd() 
directory= 'Box II'
dirpattern = re.compile(r'^.*?\\'+directory+'.*?', re.M)

for root, dirs, files in os.walk(os.path.abspath(cwd)):

    if dirpattern.search(root):
        match = dirpattern.search(root)
        match = match.group(0)

并使用此函数:

escape_dict={'\\':r'\\'}

def raw(text):
"""Returns a raw string representation of text"""
 return "".join([escape_dict.get(char,char) for char in text])

match1= raw(match)
print match '''OUTPUT = D:\dir1\dir2\dir3 '''
print match1 '''OUTPUT = D:\\dir1\\dir2\\dir3''' 

for roots, dirss, filess in os.walk('match1'):

    print filess '''OUTPUT= nothing'''

在手术室步行也不起作用,但当我这样做时:

match= 'D:\dir1\dir2\dir3'
match1= raw(match)
print match1 '''OUTPUT= D:\\dir1\\dir2\\dir3'''

在手术室步行作品:

for roots, dirss, filess in os.walk('match1'):
    print filess '''OUTPUT= [file1,file2,file3]'''

从正则表达式获取的匹配有什么区别

match = match.group(0)
print match '''OUTPUT = D:\dir1\dir2\dir3 '''

而匹配只是一个字符串

match = 'D:\dir1\dir2\dir3'

Tags: inreforoutputosmatchrootwalk

热门问题