命名文件以反映其中存储的句子

2024-10-04 07:37:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的mp3音频文件集,每个文件包含一个短句或在某些情况下两个短句。例如,文件可能包含以下三种类型之一:

  1. 你知道吗¡没有蒂恩斯·米多
  2. 你知道吗¿没有tienes miedo
  3. 变量ä你呢?Härä杰格

我需要在python3中编写一个函数,它采用如下字符串:

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

并将其转换为macosx和apacheweb服务器(不知道什么操作系统)的唯一有效文件名,音频文件最终将驻留在该服务器上。然后我将使用HTML5和javascript播放音频文件

因此python函数需要为¡“别犯错误!”“和”¿比如说,没有tienes miedo。当然,如果函数返回一些可读的内容,那么就很方便了,这样就可以知道与文件相关联的句子是什么,但这不是必须的,因为我将从命名mp3文件的同一个python脚本自动生成html脚本

我最终要面对一大堆不同的语言

你建议我怎么写这个函数

这是我无力的尝试:

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

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

返回:

'45736f206e6f206573206275656e6f2c20c2bf6e6f3f'

Tags: 文件函数noname服务器脚本类型情况
1条回答
网友
1楼 · 发布于 2024-10-04 07:37:54

您正在尝试将一个字符串转换为另一个使用较小字符集的字符串。这意味着每个字符包含的信息较少,这意味着必须有更多的字符;也就是说,文件名必须比原始字符串长。但是,你不能仅仅把每个特殊字符转换成一个字母数字字符串;这将无法与原始字符串中的字符串区分开来,除非您还将允许的字符转换为更长的字符串。这表明文件名可能无法被人类读取。如果你摆脱了这个限制,散列可能是最好的方法。您使用的是Python3,因此可以使用hashlib

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

相关问题 更多 >