Baz*_*Baz 5 python filenames sanitize python-3.x
我将一组句子的录音保存到相应的一组音频文件中.
句子包括:
Ich weiß es nicht!
¡No lo sé!
Ég veit ekki!
Run Code Online (Sandbox Code Playgroud)
您如何建议我将句子转换为人类可读的文件名,稍后将在在线服务器上提供.我现在不确定将来可能会处理哪些语言.
更新:
请注意,两句话不能相互冲突.例如:
É bär icke dej.
E bår icke dej.
Run Code Online (Sandbox Code Playgroud)
无法解析为相同的文件名,因为这些将相互覆盖.这是这里提到的slugify函数的问题:将字符串转换为有效的文件名?
我想出的最好的是使用urllib.parse.quote.但是我认为最终的输出比我希望的更难阅读.有什么建议?:
Ich%20wei%C3%9F%20es%20nicht%21
%C2%A1No%20lo%20s%C3%A9%21
%C3%89g%20veit%20ekki%21
Run Code Online (Sandbox Code Playgroud)
那么unicode呢?
\n\nimport unidecode\na = [u\'Ich wei\xc3\x9f es nicht!\', u\'\xc2\xa1No lo s\xc3\xa9!\', u\'\xc3\x89g veit ekki!\']\nfor s in a:\n print(unidecode.unidecode(s).replace(\' \', \'_\'))\nRun Code Online (Sandbox Code Playgroud)\n\n这提供了纯 ASCII 字符串,如果它们仍然包含不需要的字符,则可以轻松处理它们。以下划线的形式保持空格不同有助于提高可读性。
\n\nIch_weiss_es_nicht!\n!No_lo_se!\nEg_veit_ekki!\nRun Code Online (Sandbox Code Playgroud)\n\n如果唯一性是一个问题,则可能会在字符串中添加哈希值或类似的内容。
\n\n编辑:
\n\n关于散列似乎需要一些澄清。许多哈希函数经过明确设计,可以为相近的输入提供截然不同的输出。例如,python的内置哈希函数给出:
\n\nIn [1]: hash(\'\xc2\xa1No lo s\xc3\xa9!\')\nOut[1]: 6428242682022633791\n\nIn [2]: hash(\'\xc2\xa1No lo se!\')\nOut[2]: 4215591310983444451\nRun Code Online (Sandbox Code Playgroud)\n\n这样你就可以做类似的事情
\n\nunidecode.unidecode(s).replace(\' \', \'_\') + \'_\' + str(hash(s))[:10]\nRun Code Online (Sandbox Code Playgroud)\n\n为了得到不太长的字符串。即使哈希值如此缩短,冲突也不太可能发生。
\n| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |