从tex中提取文件路径

2024-09-29 21:58:45 发布

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

我有一个文本文件,其中包含各种类型的路径和目录以及一些url。我正在尝试获取不同的路径,不包括url和Windows目录(c:/)。在

txt = r'''
\Files\System\ado\

C:\Dir\me\match1\poq!"&\file.txt

http://example/uploads/ssh/

{drive of encrypted files}\FreezedByWizard.README.TXT

%Program Files%\Common Files\System\ado\

/home/user/web/other.longextension
'''

正确的输出:

^{pr2}$

我试过各种各样的正则表达式,包括这些,但我没有得到正确的结果。在

^{3}$

Tags: 路径目录txthttpurlwindowsdirfiles
3条回答

因为readability counts我建议不要编写自己的正则表达式,而是使用os.path.dirname和{a3}。后者匹配以C:\开头的url和文件路径

from os.path import dirname, join
from urllib.parse import urlparse

txt = r'''
\Files\System\ado\
C:\Dir\me\match1\poq!"&\file.txt
http://example/uploads/ssh/
{drive of encrypted files}\FreezedByWizard.README.TXT
%Program Files%\Common Files\System\ado\
/home/user/web/other.longextension
'''

result = [dirname(line) for line in txt.split("\n") if not urlparse(line).scheme]

结果是:

^{pr2}$

如果需要尾部斜杠,可以easily add them by using os.path.join。在

result = [join(dirname(line), '') for line in txt.split("\n") if not urlparse(line).scheme]

现在,result包含以下条目:

\Files\System\ado\
{drive of encrypted files}\
%Program Files%\Common Files\System\ado\
/home/user/web\

我不确定我是否完全理解您想要捕获的内容的意图,但是下面的代码应该会为您给出的示例生成所需的输出。在

pattern = re.compile(r'(?:^\\.+\\)|(?:^%.+%\\.+\\)|(?:^{.+}\\(?:.+\\)?)|(?:^/.+/)', re.I | re.M)
matches = re.findall(pattern, txt)
print(*matches, sep='\n')

打印为输出:

^{pr2}$

有关使用的regex模式的说明可以在here中找到。在

我注意到您想要的行要么以\ { % or /开头。也许像这样简单的事情对你有用吗?在

^(?:\\|\{|\%|\/).+(?:\\|/)

enter image description here

Regex Demo

^{pr2}$

Online Code Editor

pattern = re.compile(r'^(?:\\|\{|\%|\/).+(?:\\|/)', re.M)

相关问题 更多 >

    热门问题