替换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

解决方法

对于字幕,先用记事本打开,然后用另存为,在这一步Encoding:UTF-8再保存

enter image description here

您可以将此代码用于列表:

import re

def strip_accents():
   d = 'ĂăÂâÎîȘșȚț'
   n = 'AaAaIiSsTt'
   dl = [i for i in d]
   # print(dl)
   nl = [i for i in n]
   # print(nl)
   new_list = []
   i =0
   for string in dl:
      new_string = string. replace(dl[i],nl[i])
      new_list. append(new_string)
      # print(new_strings)
      i +=1
   return new_list  

print(strip_accents())   
,

所以,多亏了一个 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