Remove every character after a certain character in a string in python 3
我正在为我的游戏打开纹理包,并将文件名保存在一个表中,但是当我使用os.listdir()时,它会返回带有扩展名的文件名。是否有方法删除标记文件扩展名的点后的所有字符?
示例:将'Body.png'改为'Body'或'Head.jpeg'改为'Head'。
谢谢!
- 注意,这里的第一个答案很好,除了他们使用了python2.x。对于python3.x,您只需要使用print函数。
你可能想要os.path.splitext。它对于从文件名中分离文件扩展名很有用。
下面是一个例子:
1 2 3 4 5
| >>> import os.path
>>> os.path.splitext('Body.png')
('Body', '.png')
>>> os.path.splitext('Body.png')[0]
'Body' |
- 我怎么用这个?
- 或者更简单地说>>>path="c:/temp/x.txt",然后拆分路径并获取第一部分…>>>path.split(".")[0]'c:/temp/x'
- @丹帕特森——但很可能是错的……如果您有一个文件名:path = 'c:/temp.foo/x.txt'?我想path.rsplit(".", 1)[0]可能更健壮?但我宁愿依靠一个图书馆的功能来处理所有这些奇怪的角落案件…
- @米吉尔森,你对埃多克斯1号[2号]很正确。这更正确。然而,除了库的健壮性之外,使用os.path.splitext在语义上也更加清晰。
- @蒂姆霍夫曼——是的,我完全同意。语义学比人们认为的更重要,因为我认为…
- 好的,我从来没有在文件夹名中使用".",我只是养成了使用原始符号和"_uu"而不是空格的习惯,也许是因为这个原因。
- rsplit对我很有用。谢谢@mgilson。