【问题标题】:How to use Regular Expressions to select a single part of a file path如何使用正则表达式选择文件路径的单个部分
【发布时间】:2017-07-27 19:21:16
【问题描述】:

我有一个这样的文件路径:

"C:/Users/myname/Documents/KF0_IFN_HLA_11.csv"

我怎样才能使用正则表达式来获得"KF0_IFN_HLA_11.csv" 部分?

我是 Python 的初学者,我只是在寻找一些关于如何解决上述问题的提示。

【问题讨论】:

  • 如果只需要最后一部分,可以使用os.path.basename
  • 使用正则表达式吗?因为有更好的方法来做到这一点。
  • 不,我不必使用正则表达式。你介意告诉我还有什么更好的方法吗?
  • @nobodyAskedYouPatrice 如果您必须使用正则表达式,为什么有更好的方法很重要? (就像已经列出的一样)
  • 使用正则表达式,就是这个[^/]*$

标签: python regex filepath


【解决方案1】:

我不会为此使用正则表达式,而是 os.path 模块更合适。使用os.path.basename 将提取没有完整路径的文件。

>>> import os
>>> p = r"C:/Users/myname/Documents/KF0_IFN_HLA_11.csv"
>>> os.path.basename(p)
'KF0_IFN_HLA_11.csv'

【讨论】:

    【解决方案2】:

    选项 1(不推荐):

    使用re.search(首先使用import re):

    In [1099]: re.search(r'.*/(.*)$', text).group(1)
    Out[1099]: 'KF0_IFN_HLA_11.csv'
    

    模式是

    r'.*/(.*)$'
    

    它提取最后一个正斜杠之后的位。


    选项 2(推荐):

    使用os.path.splitos.path.basename(首先使用import os):

    In [1100]: os.path.split(text)[1]
    Out[1100]: 'KF0_IFN_HLA_11.csv'
    
    In [1101]: os.path.basename(text)
    Out[1101]: 'KF0_IFN_HLA_11.csv'
    

    os.path.split 将路径分为头部和尾部,这里你只提取尾部,因为这就是你需要的。

    os.path.basename 自动返回尾部。

    【讨论】:

    • @nobodyAskedYouPatrice 很高兴为您提供帮助。我相信你应该知道你所有的选择,所以你知道什么不可以使用:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多