2015-12-29 37 views
0

中的句子我有一大組mp3音頻文件,每個文件包含一個簡短的句子或在某些情況下包含兩個短句子。例如,該文件可能包含以下三種類型之一:命名文件以反映存儲在

  1. 沒有tienes miedo!
  2. ¿No tienes miedo?
  3. Varärdu?你好!

我需要寫在python3一個函數,這樣的字符:

"Var är du? Här är jag." 

,並將其轉換爲Mac OS X和Apache Web服務器的唯一且有效的文件名(不知道什麼操作系統)音頻文件將最終駐留。然後,我將使用HTML5和JavaScript播放音頻文件。

因此,python函數將需要返回不同的值「」沒有tienes misdo!「例如,「¿No tienes miedo?」。如果函數返回一些可讀的東西,這當然會很方便,這樣人們就可以知道該文件與哪個句子相關聯,但這不是強制性的,因爲我將通過相同的python腳本自動生成html腳本, mp3文件。

我最終會處理一大堆不同的語言。

你會如何推薦我寫這個函數?

這是我愚蠢的嘗試:

def file_name(s): 
    return "".join("{:02x}".format(c) for c in s.encode()) 

file_name('Eso no es bueno, ¿no?') 

將返回:

'45736f206e6f206573206275656e6f2c20c2bf6e6f3f' 
+1

這些已經是OSX的有效文件名。 – Turn

+0

@Turn不知道Web服務器運行的是什麼 – Baz

+0

生成文件名(或更好的是,**內容**)SHA1哈希。如果'git'足夠好,那麼您的網站就夠用了。 –

回答

0

你試圖將字符串轉換到使用更小的字符集另一個字符串。這意味着每個角色包含的信息較少,這意味着必須有更多的角色;也就是說,文件名必須比原始字符串長。儘管如此,您不能將每個特殊字符轉換爲一個字母數字字符串;這與原始字符串無法區分,除非您還將允許的字符轉換爲更長的字符串。這表明文件名可能不可讀。如果你擺脫了這個限制,哈希可能是最好的選擇。您正在使用Python 3,因此您可以使用hashlib

def file_name(s): 
    hash=hashlib.md5() #you can use any algorithm here 
    hash.update(s) 
    return hash.digest()