gpt4 book ai didi

r - 使用R中的iconv函数音译德语单词

转载 作者:行者123 更新时间:2023-12-05 01:56:25 28 4
gpt4 key购买 nike

我正在尝试使用 R 中的 iconv 函数来实现德语单词的正确音译(例如,MöbelMoebel) .

我编写了以下代码(尝试使用英语/德语语言环境):

iconv("Möbel", "latin1", "ASCII//TRANSLIT")
[1] "Mobel"

iconv("Möbel", "UTF-8", "ASCII//TRANSLIT")
[1] NA

iconv("Möbel", "UTF-8", "ASCII//TRANSLIT", sub ="")
[1] "Mbel"

iconv("Möbel", "Windows-1252", "ASCII//TRANSLIT")
[1] "Mobel"

但是,这不能正常工作。这是我的一些测试的输出:

#cat + library(ds4psy)
iconv(cat ("M", Umlaut["o"],"bel", sep = ""), "latin1", "ASCII//TRANSLIT")
Möbelcharacter(0)
#paste/paste0 + library(ds4psy)
> iconv(paste ("M", Umlaut["o"],"bel", sep = ""), "latin1", "ASCII//TRANSLIT")
[1] "MA?bel"

为了完整起见,我还尝试了 stringi 中的函数 stri_trans_general:

stri_trans_general("Möbel", "latin-ascii")
[1] "Mobel"

但是,如您所见,这也不起作用。

我不明白的是,为什么 iconv 函数在 PHP 中可以正常工作,但在 R 中不能正常工作? :

<?php
//some German
$utf8_sentence = 'Weiß, Goldmann, Göbel, Weiss, Göthe, Goethe und Götz';
setlocale(LC_ALL, 'de_DE');

$trans_sentence = iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_sentence);

//gives [Weiss, Goldmann, Goebel, Weiss, Goethe, Goethe und Goetz]
echo $trans_sentence . PHP_EOL;
?>

为什么我在 R 和 PHP 中看到 iconv 版本的行为差异?我在我的 R 代码中做错了什么?

最佳答案

如果您没有必要使用 iconv,还有另一种方法可以实现您的目标。

您可以定义一组要音译的德语字符和一组它们的替换字符,并将这些对用作 str_replace_all 的输入:

数据:

gg <- c("Göthe", "gerädert", "Hürde", "weiß")

首先,定义你的集合:

set <- setNames(c("oe", "ae", "ue", "ss"),
c("ö", "ä", "ü", "ß"))

然后替换:

library(stringr)
str_replace_all(gg, set)
[1] "Goethe" "geraedert" "Huerde" "weiss"

关于r - 使用R中的iconv函数音译德语单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69863915/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com