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