如何使用pythonic方式(一行)在多个模式上拆分字符串



我正在尝试从没有扩展名的文件指针中提取文件名。我的文件名如下:

this site:time.listthis.listthis site:time_sec.listthat site:time_sec.list等。此处所需的文件名始终位于空格或点之前。

目前我这样做是为了从文件名前面的空格和文件名中的点中获取文件。

search_term = os.path.basename(f.name).split(" ")[0]

search_term = os.path.basename(f.name).split(".")[0]

预期的文件名输出:thisthisthisthat

如何将以上两者组合成一种内衬和蟒蛇的方式?

提前谢谢。

使用正则表达式如下, [ .]将在空格或点字符上拆分

re.split('[ .]', os.path.basename(f.name))[0]

如果你在一个上拆分,而在另一个上拆分仍然返回更小的东西,那就是你想要的。 如果没有,你得到的就是你从第一次分裂中得到的。 您不需要正则表达式。

search_term = os.path.basename(f.name).split(" ")[0].split(".")[0]

使用正则表达式获取字符串开头的第一个单词:

import re
re.match(r"w+", "this site:time_sec.list").group()
# 'this'
re.match(r"w+", "this site:time.list").group()
# 'this'
re.match(r"w+", "that site:time_sec.list").group()
# 'that'
re.match(r"w+", "this.list").group()
# 'this'

试试这个:

pattern = re.compile(r"w+")
pattern.match(os.path.basename(f.name)).group()

当您依赖空格将要提取的内容与其他内容分开的假设时,请确保您的文件名内部没有空格。如果您依赖这样的隐式规则,而不是实际查看要提取的字符串并定制显式表达式以适应内容,则更有可能获得您事先没有想到的意外结果。

最新更新