🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

3回答

2365閲覧

〜(波ダッシュ) U+301Cがエクセル上で?になるのを延々と繰り返している

akaunto

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/02/19 07:37

pythonでスクレイピングしてきたデータをcsv形式でエクセルで保存しているのですが、
csvデータをpythonで読取り文字列等の変更作業、再度csv形式で保存を繰り返しています。

〜(波ダッシュ) が?になり、それを直して作業をし、また、〜(波ダッシュ) だけが?になるというのを延々と繰り返しています。直す作業を何回もしています。この作業から解放できないでしょうか?

0x8160(Shift_JIS)~
↑  ↓
0x301C(UTF-8)/U+301C

具体的には、

スクレイピングする
A.to_csv('A.csv')で保存
エクセルで開く
全体的に文字化けする。
イメージ説明
エクセルのテキストまたはcsvからデータをインポート
元のファイルをUnicode(UTF-8)指定でデータを読み込む
文字化けが治る。
イメージ説明
保存する。
再度エクセルで開くと〜(波ダッシュ) 0x301C(UTF-8)/U+301Cだけが → ? に文字化けする。
イメージ説明
?を〜(波ダッシュ0x8160(Shift_JIS))に置き換えて保存する。

pd.read_csv('A.csv',encoding='shift_jis')で読見込み
〜(波ダッシュ)が読み取れる。(?を直さないと〜がpythonで読み取れない)
列や文字の編集作業をして
A.to_csv('B.csv')で保存
エクセルで開く
全体的に文字化けする
以下繰り返し。。。

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

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

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

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

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

guest

回答3

0

A.to_csv('A.csv',encoding='utf-8-sig')

で治りました。
ただ、多数で作業する場合は、excelが古いバージョンの人がいると
######0xFF5E(UTF-8)の相互互換のある波ダッシュに変える
方がよいかもしれない。(文章の表現性が崩れるデメリット&面倒)

投稿2021/02/19 17:43

akaunto

総合スコア7

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

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

0

ベストアンサー

to_csvするときにencoding='utf-8-sig'と指定してBOM付きUTF-8として保存してください。
そうすると正しくExcelで開けます。

また、このCSVをExcel上で編集したうえで保存したい場合は「CSV UTF-8 (カンマ区切り) (*.csv)」として保存してください。
動作未検証ですが、たぶんBOMつきのUTF-8で保存できると思います。
なおUTF-8なCSVで保存できるのはExcel2016以上となります。

投稿2021/02/19 08:15

can110

総合スコア38341

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

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

akaunto

2021/02/19 17:35

A.to_csv('A.csv',encoding='utf-8-sig') で治りました。csvファイルもエクセルで直接文字化けせずに開くことができました。 ただ、そのうまく行ったcsvファイルを、 再度pythonで読み込む時は pd.read_csv('A.csv',encoding='utf-8-sig') とスべきなのでしょうか?
can110

2021/02/20 01:30

はい。pd.read_csv('A.csv',encoding='utf-8-sig')としてください。
akaunto

2021/02/20 20:04

ありがとうございます。
guest

0

最初に〜(波ダッシュ) 0x301C(UTF-8)を~ 0xFF5E(UTF-8)に置き換えてはいかがでしょう。
どうしても〜(波ダッシュ) に戻したいなら、すべての処理が終わってから一度だけ戻せばいいでしょう。

投稿2021/02/19 07:54

ppaul

総合スコア24670

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

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

akaunto

2021/02/19 17:45

ありがとうございます。その作業でうまくいきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問