用commandlin将普通日语罗马化

2024-05-20 09:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用bash命令行上的标准Hepburn system音译通用日语,包括汉字。在

我已经评估了几个选项,但是

  • 谷歌翻译器(可通过Translate Shell获得)仅在平假名/片假名中准确
  • KAKASI提供ASCII,但没有音译(所以toukyo而不是Tōkyō)

所以我想解析http://nihongo.j-talk.com的输出 输出在分区输出换行或者分割输出在

如果纯粹使用Bash工具(curl/jq?)来实现这一点是徒劳的,我如何使用Python/beauthoulsoup来实现这个目标?在

很抱歉没有给出代码片段,我不知道如何将数据发布到网站,如果没有API,如何使用结果。在


Tags: 命令行bashhttp音译标准选项asciishell
1条回答
网友
1楼 · 发布于 2024-05-20 09:38:34

看看http://nihongo.j-talk.com站点的源html,我猜到了API。
步骤如下:

1)通过wget向服务器发送一个日文字符串,并在索引.html.
2) 解析索引.html提取罗曼吉琴弦。在

下面是示例代码:

#!/bin/bash

string="日本語は、主に日本で使われている言語である。日本では法規によって「公用語」として規定されているわけではないが、各種法令(裁判所法第74条、会社計算規則第57条、特許法施行規則第2条など)において日本語を用いることが定められるなど事実>上の公用語となっており、学校教育の「国語」でも教えられる。"

uniqid="46a7e5f7e7c7d8a7d9636ecb077da485479b66bc"

wget -N  post-data "uniqid=$uiqid&Submit='Translate Now'&kanji_parts=standard&kanji=$string&converter=spaced&kana_output=romaji" http://nihongo.j-talk.com/ > /dev/null 2>&1 

perl -e ' 
$file = "index.html"; 
open(FH, $file) or die "$file: $!\n";

while (<FH>) {
    if (/<div id=.spaced. class=.romaji.>(.+)/) {
        ($str = $1) =~ s/<.*?>//g;
        $str =~ s/\&\#(\d+);/&utfconv($1)/eg;
        print $str, "\n";
    }
}

# utf16 to utf8
sub utfconv {
    $utf16 = shift;
    my $upper = ($utf16 >> 6) & 0b0001_1111 | 0b1100_0000;
    my $lower = $utf16 & 0b0011_1111 | 0b1000_0000;
    pack("C2", $upper, $lower);
}'

一些评论:
-我用Perl编写解析器只是因为我对它比较熟悉,但是您可以通过阅读来修改或转换成其他语言索引.html文件。
-uniqid字符串是我从网站的html源代码中选择的。如果不能很好地工作,请确保html源代码中嵌入了什么。在

希望这有帮助。在

相关问题 更多 >