以下のようなコードにおいて、エラーメッセージがでてしまい正しい出力が得られません。
日本語の文字コードの設定の仕方が悪いのかもしれませんが。。。
#コード1:
from pyswip import Prolog
p = Prolog()
p.assertz('車(ビートル)')
print(list(p.query('車(Which)')))
#Pycharmにおけるコード1の出力結果:
ERROR: Syntax error: Operator expected
ERROR: assertz((
ERROR: ** here **
ERROR: e≫\u008A(a\u0083\u0093a\u0083\u00BCa\u0083\u0088a\u0083≪))).
Traceback (most recent call last):
File "C:/Users/golf/PycharmProjects/proleg_proc/sample1.py", line 5, in <module>
p.assertz('車(ビートル)')
File "C:\Users\golf\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyswip\prolog.py", line 140, in assertz
next(cls.query(assertion.join(["assertz((", "))."]), catcherrors=catcherrors))
File "C:\Users\golf\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyswip\prolog.py", line 127, in call
"Returned: '", str(term), "'."]))
pyswip.prolog.PrologError: Caused by: 'assertz((車(ビートル))).'. Returned: 'error(syntax_error(operator_expected), string(b'assertz((\xe8\xbb\x8a(\xe3\x83\x93\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab))). ', 9))'.
Process finished with exit code 1
一方で、以下のような英語の文字のみのコードでは問題なく出力結果が出ています。
#コード2:
from pyswip import Prolog
p = Prolog()
p.assertz('car(beatle)')
print(list(p.query('car(Which)')))
#Pycharmにおけるコード2の出力結果:
[{'Which': 'beatle'}]
ご回答のほど、よろしくお願いいたします。
あなたの回答
tips
プレビュー