在同一个表达式中拆分两次?

5 python

想象一下,我有以下几点:

inFile = "/adda/adas/sdas/hello.txt"

# that instruction give me hello.txt
Name = inFile.name.split("/") [-1]

# that one give me the name I want - just hello
Name1 = Name.split(".") [0]
Run Code Online (Sandbox Code Playgroud)

有没有机会简化只用一个表达式做同样工作的事情?

Flo*_*sch 20

您可以使用os.path.basename获取路径的最后一部分,然后使用os.path.splitext获取没有扩展名的文件名,从而独立获得您想要的平台.

from os.path import basename, splitext

pathname = "/adda/adas/sdas/hello.txt"
name, extension = splitext(basename(pathname))
print name # --> "hello"
Run Code Online (Sandbox Code Playgroud)

使用os.path.basenameos.path.splitext而不是str.split,或者re.split更合适(因此获得了更多的点,然后是任何其他答案),因为它不会在使用不同路径分隔符的其他平台上分解(你会惊讶于这可能是多变的).

它也带有大多数点,因为它准确地回答了你对"一条线"的问题并且在美学上比你的例子更令人愉悦(即使这是有争议的,因为所有的品味问题)