2
我需要從Python腳本中檢查俄語單詞的拼寫。我正在通過shell將這些單詞傳遞給hunspell。我的hunspell字典都是UTF8。我從命令行使用它們沒有任何問題。如何通過subprocess.Popen正確傳遞utf8字符串從python到hunspell?
但是當我嘗試從我的Python腳本發送字符串時發生了一些奇怪的事情。
如果我用的是德語字典:
text = "Universitüt"
cmd = "echo " +text + " | /usr/local/bin/hunspell -d German_de_DE"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, executable="/bin/bash")
result, err = p.communicate()
if result:
result = result.split()
print(result)
我得到我期待
[b'Hunspell', b'1.3.2', b'&', b'Universit', b'4', b'0:', b'Universit\xc3\xa4r,', b'Universit\xc3\xa4t,', b'Universen,', b'Universaler', b'*']
,我可以處理該響應。但是,如果我發送一個俄語單詞俄字典,相同的代碼,除了當然:
text = "университат"
cmd = "echo " +text + " | /usr/local/bin/hunspell -d Russian_ru_RU"
從的hunspell的響應是空的:
[b'Hunspell', b'1.3.2']
從慶典
直接它的工作原理:
echo университат | hunspell -d Russian_ru_RU
Hunspell 1.3.2
& университат 1 0: университет
所以我想這是某種編碼問題。但我不知道它可能會考慮到我的locale是utf-8,python的sys.getdefaultencoding()
也說utf-8。
我使用Python 3.3.2在Mac OS X
任何提示將不勝感激。
你使用的是什麼Python版本? –
對不起,忘記了提。這是3.3.2 – Tench
試試'hunspell -i UTF-8 ...' –