質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Atom(フォーマット)

Webサイトの見出しや要約などのメタデータを構造化して記述するXMLベースのフォーマット。

Q&A

解決済

1回答

3697閲覧

AtomフィールドをPythonで取得・出力したいがUnicodeエスケープをエンコードできない

Kazupen

総合スコア1

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Atom(フォーマット)

Webサイトの見出しや要約などのメタデータを構造化して記述するXMLベースのフォーマット。

0グッド

0クリップ

投稿2020/06/01 13:54

前提とか

ラズベリーパイ3で、Python2.7を利用して、気象庁Atomフィード(XMLフォーマット形式電文)を定期に取得、出力したい。
当方はPython 2.7.16[GCC 8.3.0] on linux2です。

気象庁Atomフィードでは以下のような文が取得できるようです。
(利用したAtomフィールド→http://www.data.jma.go.jp/developer/xml/feed/extra.xml)

気象特別警報・警報・注意報 下関地方気象台 【山口県気象警報・注意報】注意報を解除します。

###実現したいこと

気象特別警報・警報・注意報 下関地方気象台 【山口県気象警報・注意報】注意報を解除します。

を出力。
###書いたコード(RSS取得コードの流用)
これを取得するため、ライブラリfeedparserを利用し以下のコードを使用することにしました。

python

1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10print (rss1) 11print (rss2)

実行結果は以下の通りです、

気象特別警報・警報・注意報下関地方気象台 [{'base': u'http://www.data.jma.go.jp/developer/xml/feed/extra.xml', 'type': u'text/plain', 'value': u'\u3010\u5c71\u53e3\u770c\u6c17\u8c61\u8b66\u5831\u30fb\u6ce8\u610f\u5831\u3011\u6ce8\u610f\u5831\u3092\u89e3\u9664\u3057\u307e\u3059\u3002', 'language': u'ja'}]

このように、「気象特別警報・警報・注意報下関地方気象台」は通常の文字列として出力されますが、そのあとの「【山口県気象警報・注意報】注意報を解除します。」に該当する部分がUnicodeエスケープされた文字列として出力されてしまいます。

そこで以下の通りエンコードを指定しました。

python

1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10print (rss1) 11print rss2.encode('utf-8')

実行結果は以下の通りです;

気象特別警報・警報・注意報下関地方気象台 Traceback (most recent call last): File "t.py", line 11, in <module> print rss2.encode('utf-8') AttributeError: 'list' object has no attribute 'encode'

このように怒られてしまいます。
(rss1とした「気象特別警報・警報・注意報下関地方気象台」は通常の文字列として出力される)
リストにはエンコードという属性がない、らしいので以下のように書き足す

python

1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10for rss3 in rss2 : 11 print (rss1) 12 print rss3.encode('utf-8')

実行結果は以下の通りです;

気象特別警報・警報・注意報下関地方気象台 Traceback (most recent call last): File "t.py", line 12, in <module> print rss3.encode('utf-8') File "/usr/local/lib/python2.7/dist-packages/feedparser.py", line 400, in __getattr__ raise AttributeError, "object has no attribute '%s'" % key AttributeError: object has no attribute 'encode'

このようなエラーが出て、ここで詰まってしまっています。
自分がやったことは以上となります。どなたか解決方法をご教示頂ければ幸いです。
なにか情報で足りないところがありましたらお申し付けください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

rss2は、辞書のリストとなっているので

python

1print rss2[0]["value"]

としてはダメでしょうか。

投稿2020/06/01 14:14

patapi

総合スコア820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kazupen

2020/06/01 23:46

辞書のリストでしたか... これで解決できました。 ご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問