【发布时间】:2012-11-02 11:40:31
【问题描述】:
我在把这个逻辑写在纸上有点麻烦:
我要解析的字符串:"Jan - 2012 Presentation v1.3.ppt.pdf - 500KB"
此字符串可以变化,但结构始终为“NAME+EXT+FILESIZE”
我想退回扩展名。但是由于显而易见的原因,我不能只是split(".")
所以我想出了别的办法:
stringy = "Jan - 2012 Presentation v1.3.ppt.pdf - 500KB"
ext = [".pdf",".jpg",".ppt",".txt",".doc"]
for i in ext:
indx = stringy.find(i)
...
我陷入了需要弄清楚如何告诉 Python 从产生的最大索引开始进行扩展的地方。应该是whatiwant = stringy[indx:4] 之类的东西,但我不知道如何告诉它只采用最大的索引......最大的索引显然意味着字符串中的最后一个扩展名,这是我想要得到的那个。在这个特定的例子中,我关心的不是“ppt”,而是“pdf”。
这也许可以用更 Pythonic 的方式来完成吗?或者至少更有效?
【问题讨论】:
-
所有出现的字符串中是否都有破折号(“-”)?
-
针对这个具体问题,还有
string的rfind。 -
破折号始终位于末尾以分隔字符串的文件大小部分。是的。
-
为什么要投反对票?这不是一个有效的问题吗?
标签: python string parsing text indexing