2013-07-19 97 views
0

我基本上只想調用我的字符串在「。」之前的部分。Python簡單的字符串方法

例如,如果我的文件名是sciPHOTOf105w0.fits,我想調用「sciPHOTOf105w」作爲它自己的字符串,以便我可以使用它來命名與其相關的新文件。你怎麼做到這一點?我不能只使用數字值「如果我的文件名是'文件',文件[5:10]」。我需要能夠收集點到點而不必計數,因爲文件名可以有不同的長度。

+1

我覺得你真的應該考慮接受'splitext的一個()'的解決方案:他們處理所有的情況下正常(無網點的所有路徑,或多個點):這將引導誰擁有人同樣的問題,你更強大和相關的答案。 – EOL

回答

1
In [33]: filename = "sciPHOTOf105w0.fits" 

In [34]: filename.rpartition('.')[0] 
Out[34]: 'sciPHOTOf105w0' 

In [35]: filename.rsplit('.', 1)[0] 
Out[35]: 'sciPHOTOf105w0' 
+0

啊謝謝你,謝謝。 – vdogsandman

+0

+1分區。 – seth

+0

如果文件名是'my.files \\ sciPHOTOf105w0',該怎麼辦? –

4

您還可以使用os.path中,像這樣:

>>> from os.path import splitext 
>>> splitext('sciPHOTOf105w0.fits') # separates extension from file name 
('sciPHOTOf105w0', '.fits') 
>>> splitext('sciPHOTOf105w0.fits')[0] 
'sciPHOTOf105w0' 

如果你的文件恰好有一個較長的路徑,這種方法也將佔據你的完整路徑。

+0

如果目錄部分有一段時間但文件名沒有,它仍然會做正確的事情。 –

+0

優秀點,@Mark Ransom。 –

+0

+1:如果路徑沒有點,它也可以。 – EOL

2
import os.path 
filename = "sciPHOTOf105w0.fits" 

root, ext = os.path.splitext(filename) 
print "root is: %s" % root 
print "ext is: %s" % ext 

結果:

>root is: sciPHOTOf105w0 
>ext is: .fits 
0

您可以使用.index()在一根繩子上找到一個字符串的第一次出現。

>>> filename = "sciPHOTOf105w0.fits" 
>>> filename.index('.') 
14 
>>> filename[:filename.index('.')] 
'sciPHOTOf105w0' 
+0

由於目標是刪除擴展名,'os.path.splittext()'更合適(即使路徑不包含或多個點,它也可以工作)。 – EOL

相關問題