我的文本格式如下
|相关文字| 后跟 |可变数量的空格| 后跟 |相关文本(包含空格的文件夹路径| 后跟 |可变数量的空格| 后跟 |不相关文本|
我的目标是检索两个相关文本,但我没有处理正则表达式的经验(我相信这是我应该使用的?)
提前致谢!:)
例如:
68465d1wd C:\nice\ pro g ram files\path.html d d5 d w4d w5 d 4wd46
我想找回
富 = 68465d1wd
bar = path.html
我的文本格式如下
|相关文字| 后跟 |可变数量的空格| 后跟 |相关文本(包含空格的文件夹路径| 后跟 |可变数量的空格| 后跟 |不相关文本|
我的目标是检索两个相关文本,但我没有处理正则表达式的经验(我相信这是我应该使用的?)
提前致谢!:)
例如:
68465d1wd C:\nice\ pro g ram files\path.html d d5 d w4d w5 d 4wd46
我想找回
富 = 68465d1wd
bar = path.html
>>> data = '''68465d1wd C:\nice\ program files\path.html dw6d5w4dw5d4wd46'''
>>> re.split(r'\s{2,}', data)
['68465d1wd', 'C:\nice\\ program files\\path.html', 'dw6d5w4dw5d4wd46']
>>> foo, bar = re.split(r'\s{2,}', data)[:2]
>>> foo
'68465d1wd'
>>> bar
'C:\nice\\ program files\\path.html'
>>> import os
>>> os.path.basename(bar)
'path.html'
没有正则表达式:
>>> foo, rest = data.split(' ', 1)
>>> bar, rest = rest.lstrip().split(' ', 1)
>>> foo
'68465d1wd'
>>> bar
'C:\nice\\ program files\\path.html'
>>> os.path.basename(bar)
'path.html'
如果您的字段至少由两个空格分隔,则应该这样做:
import re
foo, bar, _irrelevant = re.split(r"\s{2,}", line)
编辑:上述解决方案不再适用于修改后的答案。如果(正如我从您的评论中收集的那样)文件名总是有一个.php
或.htm[l]
扩展名,并且在最终文件名之前总是有一个路径,您可以尝试以下方法:
foo, rest = re.split(r"\s{2,}", line, 1)
bar = re.search(r"[^\\]*\.(?:php|html?)\b", rest).group(0)
.php
这将为您提供,.htm
或之前的最后一个反斜杠之后的所有内容.html
。基本上所有东西都有一个正则表达式,但你需要弄清楚你的数据是什么样子的。