2011-06-26 48 views
0

我一直在用Tkinter和模塊mp3play製作mp3播放器。如何將'C: Music song.mp3'轉換爲r'C: Music song.mp3'

說我有首歌曲播放:C:\音樂\ Song.mp3的

和播放這首歌,我必須運行此腳本:

import mp3play 
music_file=r'C:\Music\song.mp3' 
clip = mp3play.load(music_file) 
clip.play() 

很容易,我的問題是,雖然在那裏獲得「r」。

我曾嘗試:

import mp3play 
import re 
music_file="'C:\Music\song.mp3'" 

music_file='r'+music_file 
music_file=re.sub('"','',music_file) 

print music_file 
clip = mp3play.load(music_file) 

clip.play() 

它得到的輸出:r'C:\Music\song.mp3'

,但它是一個字符串,所以它不會讀取該文件。

+0

'mp3play.load()'方法期望作爲參數,**文件名**或**文件內容**的作用是什麼? – pajton

+0

你真的需要生成一個前綴爲'r'的字符串嗎?那裏的'r'表示該字符串是一個原始字符串。它允許你在不轉義的情況下輸入反斜槓'\'。你的路徑有反斜槓,所以它就是這樣。 –

回答

1

在Python中,r前綴引入了raw string。在原始字符串之外,反斜槓(\)字符被認爲是escape characters,必須自行轉義(將其加倍)。

嘗試一個簡單的字符串,而不是:

music_file = 'C:\\Music\\song.mp3' 
+0

多數民衆贊成在多數民衆贊成在多數民衆贊成在我試圖說,並給了我一個錯誤,我試了一遍,它的工作:s –

+0

ahh沒關係,這是因爲有一個數字在歌曲 –

2

嘗試:

music_file='C:/Music/song.mp3' 
+0

這是一個很好的解決方案,python做正斜槓回斜線在Windows上翻譯就好了。 –

3

在前面的 'R' 表示稱爲原始串串的特定類別。你不能通過添加兩個字符串或重新替換一個字符串來獲得。它只是一個字符串類型,但轉義字符要小心。

>>> s = r'something' 
>>> s 
'something' 
>>> 

當你寫劇本,用「R」,如果你的raw_input通過獲取輸入,蟒蛇會採取逃避字符的照顧。所以,問題是你爲什麼要這麼做?

1

您所說的r必須放在字符串定義之前,並告訴python下面的字符串是「raw」,這意味着它將忽略反斜槓轉義(所以它不會在文件名中的無效反斜槓上出錯,例如)。

爲什麼不像第一個例子那樣做?我沒有看到你在第二個例子中想要完成的事情。

1

你可以嘗試music_file = r'%s' % path_to_file

0

由於一些其他的答案已經指出了(我只是張貼這作爲一個答案,因爲它似乎是一種愚蠢,使其評論),你給什麼在你的第一個代碼塊中是,你的腳本的內容應該是。您不需要做任何特殊的事情就可以在那裏獲得r。事實上,'r'不是字符串的一部分,它是使字符串成爲代碼的一部分。

相關問題