[英]Regex to match varying strings in a list
我有一個包含unicode字符串的Python列表:
mylist = [
u'Path:path\\to\\some\\file.html\n user ID: a.b.c\n',
u'Path:somewhat\\longer\\path\\to\\some\\file.jpeg\n user ID: a:b_c\n someotherID:x:x:x\n'
]
我只需要提取Path的最后一部分:在這種情況下,就是file.html和file.jpeg。 是否有全面的正則表達式將這些信息從我的清單中刪除?
如果您使用ntpath
而不是os.path
ntpath
獲得正確的行為而沒有不穩定的正則表達式:
>>> import ntpath
>>> [ntpath.basename(entry.split('\n')[0]) for entry in mylist]
[u'file.html', u'file.jpeg']
與@Kasra所說的相反,您的路徑是有效的,它們只是來自另一個操作系統。
您不需要正則表達式,可以使用os.path
,但是首先需要用/
替換\\
,然后使用path.basename
:
>>> from os import path
>>> [path.basename(i.split()[0].replace('\\','/')) for i in mylist if i]
[u'file.html', u'file.jpeg']
for path in path_list:
# assuming each item in the list actually contains a path
print re.search(r'Path:(?:.*?\\)(\w+\.\w+)', path).group(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.