命令行中的罗马化通用日语

Romanize generic Japanese in commandline

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

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

所以我想解析 http://nihongo.j-talk.com 的输出 输出在 div.outputwrap 或 div.output

如果纯粹用 Bash 工具(curl / jq?)做这件事是徒劳的,我怎么能用 Python / BeautifulSoup 达到这个目的?

抱歉没有提供代码段,我不知道如何将数据 POST 发送到网站并在没有 API 的情况下使用结果。

查看 http://nihongo.j-talk.com 站点的来源 html,我猜测 API。
以下是步骤:

1) 通过wget向服务器发送一个日语字符串,得到结果在index.html.
2) 解析 index.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 = ) =~ s/<.*?>//g;
        $str =~ s/\&\#(\d+);/&utfconv()/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 编写了解析器,因为它对我来说相当熟悉,但您可以通过阅读 index.html 文件来修改或将其转换为其他语言。
- uniqid 字符串是我从网站的 html 来源中挑选的。如果效果不佳,请确保 html 源代码中嵌入了什么。

希望对您有所帮助。