【发布时间】:2016-11-28 14:50:02
【问题描述】:
我有一长串人类可读的字符串,其中一些包含一些非 ASCII 甚至非拉丁字符。
'Count €'
'Contains äüöß'
'Y tu mamá también.'
'что'
但我使用的服务要求名称仅包含 a-z、A-Z、0-9、.、_、(空格)。
将它们转换为在这些要求下有效的唯一名称的简洁方法是什么?
我们希望尽可能地保持人类可读性。例如,理想情况下不要将. 更改为full stop,也不要将& 更改为u38。我们不能简单地删除无效字符或变音符号。例如:
'Count euro symbol'
'Contains a with umlaut u with umlaut o with umlaut sharp s'
'Y tu mama_ tambie_n.'
'cyrillic small letter che ...'
以下是限制条件:
- 必须是 Python(2 和 3)
- 必须不需要安装包
- 必须保持唯一性(如果有边缘情况没有,那很好)
- 必须简洁
(注意:'Y tu mama tambien.' 是不可接受的,因为它可能会打破唯一性约束。)
将任意字符串转换为有效的类名或标识符有一些相似之处。
【问题讨论】:
标签: python unicode nlp naming-conventions naming