1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonでDeePL APIの英訳結果を、文字列(str)型として受け取る方法

Posted at

課題

DeePLのAPIを使って英訳し、その結果を使って他のAPIを呼び出そうとしていました。
しかしDeePLの英訳結果を文字列として受け取れてないことが原因で、以下のようなエラーが出てしまいました。

エラーメッセージ
--> 179         raise TypeError(f'Object of type {o.__class__.__name__} '
    180                         f'is not JSON serializable')
    181 

TypeError: Object of type TextResult is not JSON serializable

DeePLの英訳結果を文字列として受け取るための方法を探すのに苦労したので、共有させていただきます。
またこれは、翻訳結果を文字列として受け取る際にも使える方法なので、参考にしていただけると幸いです。

結論

英訳結果に、「.text」メソッドを使用する

解決する前のコード

出力結果より、英訳の結果を入れたtranslation_resultsのタイプが、
<class 'deepl.translator.TextResult'>になっている事が分かります。

解決する前のコード
# deepLの認証コードと設定
deepL_auth_key = "ご自身のAPIキー"
translator = deepl.Translator(deepL_auth_key)

#英訳するもののリストを用意
result =[ "私は今日も、元気です。","おはよう"] 

#リスト型からひとつずつ取得して、それぞれを英訳し、文字列型として取得する
for i in result:
    # EN-USに翻訳
    translation_results = translator.translate_text(
        i, target_lang="EN-US")
    print(translation_results)
    print("型のタイプは、")
    print(type(translation_results))
    print("-----------------")
I am fine today, too.
型のタイプは、
<class 'deepl.translator.TextResult'>
-----------------
Good morning.
型のタイプは、
<class 'deepl.translator.TextResult'>
-----------------

解決した後のコード

英訳の結果を入れたtranslation_resultsに.textを追加しました。
これにより、英訳した結果が<class 'str'>のように、文字列(str)型として受け取れています。

解決した後のコード
# deepLの認証コードと設定
deepL_auth_key = "ご自身のAPIキー"
translator = deepl.Translator(deepL_auth_key)

#英訳するもののリストを用意
result =[ "私は今日も、元気です。","おはよう"] 

#リスト型からひとつずつ取得して、それぞれを英訳し、文字列型として取得する
for i in result:
    # EN-USに翻訳
    translation_results = translator.translate_text(
        i, target_lang="EN-US")
    print(translation_results.text)
    print("型のタイプは、")
    print(type(translation_results.text))
    print("-----------------")
I am fine today, too.
型のタイプは、
<class 'str'>
-----------------
Good morning.
型のタイプは、
<class 'str'>
-----------------

参考にしたサイト

BeautifulSoupでスクレイピング。データをJsonに出力すると「TypeError: Object of type Tag is not JSON serializable」

最後に

TypeError: Object of type TextResult is not JSON serializable
のエラーが出てしまった際には、「.textメソッドを使って、文字列として受け取れるようにしてみる」というのをお試し下さい!

最後までお読みいただき、ありがとうございました!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?