0

我的文本格式如下

|相关文字| 后跟 |可变数量的空格| 后跟 |相关文本(包含空格的文件夹路径| 后跟 |可变数量的空格| 后跟 |不相关文本|

我的目标是检索两个相关文本,但我没有处理正则表达式的经验(我相信这是我应该使用的?)

提前致谢!:)

例如:

68465d1wd        C:\nice\ pro   g  ram   files\path.html          d   d5 d   w4d   w5 d   4wd46

我想找回

富 = 68465d1wd

bar = path.html

4

2 回答 2

1
>>> 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'
于 2013-06-19T14:41:47.393 回答
1

如果您的字段至少由两个空格分隔,则应该这样做:

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。基本上所有东西都有一个正则表达式,但你需要弄清楚你的数据是什么样子的。

于 2013-06-19T14:42:08.950 回答