1

このロジックを紙に書くのに少し苦労しています:

解析したい文字列:"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な方法で行うことができますか? または、少なくともより効率的ですか?

4

3 に答える 3

2
In [44]: stringy[stringy.rfind('.'):stringy.rfind('.')+4]
Out[44]: '.pdf'
于 2012-11-02T11:46:28.490 に答える
1

使用regex:

>>> strs="Jan - 2012 Presentation v1.3.ppt.pdf - 500KB"

>>> re.findall(r"(\.\w+)",strs)[-1]
'.pdf'

また:

>>> re.findall(r".*(\.\w+)",strs)
['.pdf']
于 2012-11-02T11:43:30.777 に答える
0

これを試して:

>>> stringy = "Jan - 2012 Presentation v1.3.ppt.pdf - 500KB"
>>> extension = stringy.split(".")[-1].split("-")[0].strip()
>>> extension
'pdf'
于 2012-11-02T11:43:56.420 に答える