R 把拉丁语音译成古希腊字母

R 把拉丁语音译成古希腊字母,r,string,icu,stringi,R,String,Icu,Stringi,要将拉丁字母转换为希腊字母,请使用R的stringi包,该包依赖于ICU的音译: library(stringi) stri_trans_general("abcd", "latin-greek") 有没有类似的简单方法将拉丁语转换为古希腊语(αβγδ)而不是希腊语(ἀβκδ)现代和古希腊字母表之间没有真正的区别。也许最大的原因是古希腊字母表没有小写字母。αβγδ和ἀβκδ是现代希腊语(字母重音可能与发音有关,现代希腊语已经没有了) 现在,stri_trans_general所做的是在考虑发音

要将拉丁字母转换为希腊字母,请使用R的
stringi
包,该包依赖于ICU的音译:

library(stringi)
stri_trans_general("abcd", "latin-greek")

有没有类似的简单方法将拉丁语转换为古希腊语(αβγδ)而不是希腊语(ἀβκδ)

现代和古希腊字母表之间没有真正的区别。也许最大的原因是古希腊字母表没有小写字母。αβγδ和ἀβκδ是现代希腊语(字母重音可能与发音有关,现代希腊语已经没有了)

现在,
stri_trans_general
所做的是在考虑发音的同时进行音译:

可发音:如果这个过程只是简单地映射字符而不考虑它们的发音,那么音译就没有那么有用了。简单地将“αβγΔεζηθ…”映射到“abcdefgh…”将产生可能完整且明确的字符串,但不能发音。(见附件)

音译有不同的标准,如ISO843和UN(参见和)
c
可以音译为“κ”或“σ”,选择前者


既然编程也是如此,如果您想制作自己的映射,下面是一些代码:

## You have to complete the mapping
map <- data.frame(latin = c("a", "b", "c", "d", "e", "f", " "),
                  greek = c("α", "β", "γ", "δ", "ε", "φ", " "),
                  stringsAsFactors=FALSE)

mapChars <- function(latin) {
    a <- strsplit(latin, "")[[1]]
    res <- sapply(a, function(x) map$greek[map$latin == x])
    paste(res, sep="", collapse="")
}

mapChars("abcd")
## [1] "αβγδ"
##您必须完成映射

map我想你想做的(至少,作为你任务的一部分)是去除所有口音

这里有一种使用
stringi
的方法

library("stringi")
stri_flatten(
   stri_extract_all_charclass(
       stri_trans_nfkd(
          stri_trans_general("abcd", "latin-greek")
       ),
   "\\p{L}")[[1]]
)
## [1] "αβκδ"

首先,我们将一个stringi音译为希腊语。然后我们执行Unicode规范化NFKD——这将重音字符分别拆分为字符和重音。接下来是提取所有字母并连接结果的时候了。HTH

有趣的是,我不知道你可以用
stringi
…顺便说一句,我想知道为什么在Unicode标准中“b”被映射到β(因此在ICU中,因此在stringi中)。在现代希腊语中(如果我错了请纠正我)β的拼写类似于“vita”。。。对于那些好奇的人来说,这只是一个值得思考的问题:)谢谢你提供的详细信息!我用你的密码得到了“aßγd”。使用
chartr(“abc”,“αβγ”,c(“a”,“b”,“c”))
我得到了奇怪的结果和
库(gsubfn);tmp我再次检查了我的代码,它对我有效。另外
chartr
返回
“α”“β”“γ”
。而且
gsubfn
对我也有效:
gsubfn('.',tmp,c(“aa”,“abcd”)
返回
“αα”“αβγδ”
。也许你的编辑器有一些编码问题?我使用的emacs wich似乎可以很好地处理unicode。好的,非常感谢!似乎是RStudio+Windows的问题:(“beta”有效,“alpha”无效,真奇怪。