簡體   English   中英

正則表達式以匹配列表中的各種字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM