首页 > 解决方案 > 替换python中的变音符号

问题描述

如何用标准化单词替换 srt 文件中的变音符号?

我有一个罗马尼亚语 srt,我正在尝试使用 jellyfin 流式传输电影,但我遇到了一个问题,即应用程序不支持特殊字符,ĂăÂâÎîȘșȚț所以我试图摆脱它们。

我尝试使用 unidecode 但这些词被奇怪地替换为ț-> thș->o

'我也尝试过仅使用 sed 替换字符,但某些字符ș显示如下º,因此以下函数不会替换它们:

def strip_accents(s):
    d = 'ĂăÂâÎîȘșȚț'
    n = 'AaAaIiSsTt'
    dl = [i for i in d]
    nl = [i for i in n]
    ii = 0
    for x in dl:
        s = re.sub(x, nl[ii], s)
        ii += 1
    return s

标签: python-3.xdiacritics

解决方案


所以,多亏了 github 托管的 repo,我找到了一种方法来做我想做的事。我只是将奇怪的字符替换为º, ª正确的变音符号ș Ș,一切都按照我想要的方式进行。我不需要更换变音符号来使字幕正常工作。

https://github.com/pckltr/corecteaza-subtitrari/

Python代码:

def fix_accents(s):
    char_dict = { "º": "ș", "ª": "Ș", "ş": "ș", "Ş": "Ș", "ţ": "ț", "Ţ": "Ț", "þ": "ț", "Þ": "Ț", "ã": "ă"  }
    for k,v in char_dict.items():
        s = s.replace(k, v)
    return s

推荐阅读