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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

文字コード

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

Python

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

Q&A

解決済

3回答

9130閲覧

jsonファイルのシングルクォーテーションをダブルクォーテーションに置換するコードが書きたい

Kokku

総合スコア39

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

文字コード

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

Python

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

0グッド

1クリップ

投稿2021/04/01 06:14

編集2021/04/01 06:15

機械学習用にjsonファイルを読み込もうとしたところクォーテーションの違いによってエラーが起きてしまったので、
pythonのプログラミングでシングルクォーテーションをダブルクォーテーションに置換するコードを書きたいと思っています。

具体的なコード例やサイトなどがあればお聞きしたいです。

0 {'face_token': '3d03eb39f7479435db8ce3eb171f47b6', 'face_rectangle': {'top': 64, 'left': 31, 'width': 214, 'height': 214}, 'landmark': {'contour_chin': {'x': 117, 'y': 273}, 'contour_left1': {'x': 33, 'y': 101}, 'contour_left2': {'x': 33, 'y': 124}, 'contour_left3': {'x': 35, 'y': 147}, 'contour_left4': {'x': 37, 'y': 169}, 'contour_left5': {'x': 42, 'y': 192}, 'contour_left6': {'x': 49, 'y': 213}, 'contour_left7': {'x': 61, 'y': 233}, 'contour_left8': {'x': 76, 'y': 250}, 'contour_left9': {'x': 93, 'y': 265}, 'contour_right1': {'x': 247, 'y': 107}, 'contour_right2': {'x': 246, 'y': 133}, 'contour_right3': {'x': 242, 'y': 159}, 'contour_right4': {'x': 238, 'y': 184}, 'contour_right5': {'x': 230, 'y': 209}, 'contour_right6': {'x': 215, 'y': 230}, 'contour_right7': {'x': 195, 'y': 247}, 'contour_right8': {'x': 171, 'y': 260}, 'contour_right9': {'x': 146, 'y': 271}, 'left_eye_bottom': {'x': 77, 'y': 107}, 'left_eye_center': {'x': 79, 'y': 101}, 'left_eye_left_corner': {'x': 57, 'y': 101}, 'left_eye_lower_left_quarter': {'x': 66, 'y': 104}, 'left_eye_lower_right_quarter': {'x': 89, 'y': 107}, 'left_eye_pupil': {'x': 79, 'y': 99}, 'left_eye_right_corner': {'x': 100, 'y': 107}, 'left_eye_top': {'x': 79, 'y': 92}, 'left_eye_upper_left_quarter': {'x': 67, 'y': 94}, 'left_eye_upper_right_quarter': {'x': 91, 'y': 97}, 'left_eyebrow_left_corner': {'x': 42, 'y': 80}, 'left_eyebrow_lower_left_quarter': {'x': 55, 'y': 76}, 'left_eyebrow_lower_middle': {'x': 69, 'y': 77}, 'left_eyebrow_lower_right_quarter': {'x': 83, 'y': 84}, 'left_eyebrow_right_corner': {'x': 99, 'y': 89}, 'left_eyebrow_upper_left_quarter': {'x': 54, 'y': 65}, 'left_eyebrow_upper_middle': {'x': 71, 'y': 65}, 'left_eyebrow_upper_right_quarter': {'x': 87, 'y': 74}, 'mouth_left_corner': {'x': 78, 'y': 189}, 'mouth_lower_lip_bottom': {'x': 124, 'y': 230}, 'mouth_lower_lip_left_contour1': {'x': 98, 'y': 208}, 'mouth_lower_lip_left_contour2': {'x': 87, 'y': 208}, 'mouth_lower_lip_left_contour3': {'x': 101, 'y': 223}, 'mouth_lower_lip_right_contour1': {'x': 149, 'y': 210}, 'mouth_lower_lip_right_contour2': {'x': 159, 'y': 211}, 'mouth_lower_lip_right_contour3': {'x': 145, 'y': 224}, 'mouth_lower_lip_top': {'x': 124, 'y': 217}, 'mouth_right_corner': {'x': 168, 'y': 193}, 'mouth_upper_lip_bottom': {'x': 125, 'y': 198}, 'mouth_upper_lip_left_contour1': {'x': 117, 'y': 191}, 'mouth_upper_lip_left_contour2': {'x': 97, 'y': 189}, 'mouth_upper_lip_left_contour3': {'x': 102, 'y': 194}, 'mouth_upper_lip_right_contour1': {'x': 133, 'y': 191}, 'mouth_upper_lip_right_contour2': {'x': 151, 'y': 191}, 'mouth_upper_lip_right_contour3': {'x': 147, 'y': 195}, 'mouth_upper_lip_top': {'x': 125, 'y': 193}, 'nose_contour_left1': {'x': 109, 'y': 104}, 'nose_contour_left2': {'x': 100, 'y': 141}, 'nose_contour_left3': {'x': 105, 'y': 170}, 'nose_contour_lower_middle': {'x': 123, 'y': 178}, 'nose_contour_right1': {'x': 140, 'y': 105}, 'nose_contour_right2': {'x': 148, 'y': 144}, 'nose_contour_right3': {'x': 141, 'y': 172}, 'nose_left': {'x': 91, 'y': 158}, 'nose_right': {'x': 155, 'y': 162}, 'nose_tip': {'x': 124, 'y': 164}, 'right_eye_bottom': {'x': 173, 'y': 109}, 'right_eye_center': {'x': 172, 'y': 104}, 'right_eye_left_corner': {'x': 152, 'y': 106}, 'right_eye_lower_left_quarter': {'x': 162, 'y': 108}, 'right_eye_lower_right_quarter': {'x': 184, 'y': 108}, 'right_eye_pupil': {'x': 172, 'y': 102}, 'right_eye_right_corner': {'x': 193, 'y': 105}, 'right_eye_top': {'x': 172, 'y': 95}, 'right_eye_upper_left_quarter': {'x': 161, 'y': 98}, 'right_eye_upper_right_quarter': {'x': 183, 'y': 98}, 'right_eyebrow_left_corner': {'x': 150, 'y': 92}, 'right_eyebrow_lower_left_quarter': {'x': 169, 'y': 90}, 'right_eyebrow_lower_middle': {'x': 186, 'y': 86}, 'right_eyebrow_lower_right_quarter': {'x': 202, 'y': 84}, 'right_eyebrow_right_corner': {'x': 216, 'y': 87}, 'right_eyebrow_upper_left_quarter': {'x': 166, 'y': 79}, 'right_eyebrow_upper_middle': {'x': 184, 'y': 72}, 'right_eyebrow_upper_right_quarter': {'x': 204, 'y': 72}}, 'attributes': {'gender': {'value': 'Male'}, 'age': {'value': 26}, 'emotion': {'anger': 98.934, 'disgust': 1.06, 'fear': 0.002, 'happiness': 0.001, 'neutral': 0.001, 'sadness': 0.001, 'surprise': 0.002}}} 1 {'face_token': '3d03eb39f7479435db8ce3eb171f47b6', 'face_rectangle': {'top': 64, 'left': 31, 'width': 214, 'height': 214}, 'landmark': {'contour_chin': {'x': 117, 'y': 273}, 'contour_left1': {'x': 33, 'y': 101}, 'contour_left2': {'x': 33, 'y': 124}, 'contour_left3': {'x': 35, 'y': 147}, 'contour_left4': {'x': 37, 'y': 169}, 'contour_left5': {'x': 42, 'y': 192}, 'contour_left6': {'x': 49, 'y': 213}, 'contour_left7': {'x': 61, 'y': 233}, 'contour_left8': {'x': 76, 'y': 250}, 'contour_left9': {'x': 93, 'y': 265}, 'contour_right1': {'x': 247, 'y': 107}, 'contour_right2': {'x': 246, 'y': 133}, 'contour_right3': {'x': 242, 'y': 159}, 'contour_right4': {'x': 238, 'y': 184}, 'contour_right5': {'x': 230, 'y': 209}, 'contour_right6': {'x': 215, 'y': 230}, 'contour_right7': {'x': 195, 'y': 247}, 'contour_right8': {'x': 171, 'y': 260}, 'contour_right9': {'x': 146, 'y': 271}, 'left_eye_bottom': {'x': 77, 'y': 107}, 'left_eye_center': {'x': 79, 'y': 101}, 'left_eye_left_corner': {'x': 57, 'y': 101}, 'left_eye_lower_left_quarter': {'x': 66, 'y': 104}, 'left_eye_lower_right_quarter': {'x': 89, 'y': 107}, 'left_eye_pupil': {'x': 79, 'y': 99}, 'left_eye_right_corner': {'x': 100, 'y': 107}, 'left_eye_top': {'x': 79, 'y': 92}, 'left_eye_upper_left_quarter': {'x': 67, 'y': 94}, 'left_eye_upper_right_quarter': {'x': 91, 'y': 97}, 'left_eyebrow_left_corner': {'x': 42, 'y': 80}, 'left_eyebrow_lower_left_quarter': {'x': 55, 'y': 76}, 'left_eyebrow_lower_middle': {'x': 69, 'y': 77}, 'left_eyebrow_lower_right_quarter': {'x': 83, 'y': 84}, 'left_eyebrow_right_corner': {'x': 99, 'y': 89}, 'left_eyebrow_upper_left_quarter': {'x': 54, 'y': 65}, 'left_eyebrow_upper_middle': {'x': 71, 'y': 65}, 'left_eyebrow_upper_right_quarter': {'x': 87, 'y': 74}, 'mouth_left_corner': {'x': 78, 'y': 189}, 'mouth_lower_lip_bottom': {'x': 124, 'y': 230}, 'mouth_lower_lip_left_contour1': {'x': 98, 'y': 208}, 'mouth_lower_lip_left_contour2': {'x': 87, 'y': 208}, 'mouth_lower_lip_left_contour3': {'x': 101, 'y': 223}, 'mouth_lower_lip_right_contour1': {'x': 149, 'y': 210}, 'mouth_lower_lip_right_contour2': {'x': 159, 'y': 211}, 'mouth_lower_lip_right_contour3': {'x': 145, 'y': 224}, 'mouth_lower_lip_top': {'x': 124, 'y': 217}, 'mouth_right_corner': {'x': 168, 'y': 193}, 'mouth_upper_lip_bottom': {'x': 125, 'y': 198}, 'mouth_upper_lip_left_contour1': {'x': 117, 'y': 191}, 'mouth_upper_lip_left_contour2': {'x': 97, 'y': 189}, 'mouth_upper_lip_left_contour3': {'x': 102, 'y': 194}, 'mouth_upper_lip_right_contour1': {'x': 133, 'y': 191}, 'mouth_upper_lip_right_contour2': {'x': 151, 'y': 191}, 'mouth_upper_lip_right_contour3': {'x': 147, 'y': 195}, 'mouth_upper_lip_top': {'x': 125, 'y': 193}, 'nose_contour_left1': {'x': 109, 'y': 104}, 'nose_contour_left2': {'x': 100, 'y': 141}, 'nose_contour_left3': {'x': 105, 'y': 170}, 'nose_contour_lower_middle': {'x': 123, 'y': 178}, 'nose_contour_right1': {'x': 140, 'y': 105}, 'nose_contour_right2': {'x': 148, 'y': 144}, 'nose_contour_right3': {'x': 141, 'y': 172}, 'nose_left': {'x': 91, 'y': 158}, 'nose_right': {'x': 155, 'y': 162}, 'nose_tip': {'x': 124, 'y': 164}, 'right_eye_bottom': {'x': 173, 'y': 109}, 'right_eye_center': {'x': 172, 'y': 104}, 'right_eye_left_corner': {'x': 152, 'y': 106}, 'right_eye_lower_left_quarter': {'x': 162, 'y': 108}, 'right_eye_lower_right_quarter': {'x': 184, 'y': 108}, 'right_eye_pupil': {'x': 172, 'y': 102}, 'right_eye_right_corner': {'x': 193, 'y': 105}, 'right_eye_top': {'x': 172, 'y': 95}, 'right_eye_upper_left_quarter': {'x': 161, 'y': 98}, 'right_eye_upper_right_quarter': {'x': 183, 'y': 98}, 'right_eyebrow_left_corner': {'x': 150, 'y': 92}, 'right_eyebrow_lower_left_quarter': {'x': 169, 'y': 90}, 'right_eyebrow_lower_middle': {'x': 186, 'y': 86}, 'right_eyebrow_lower_right_quarter': {'x': 202, 'y': 84}, 'right_eyebrow_right_corner': {'x': 216, 'y': 87}, 'right_eyebrow_upper_left_quarter': {'x': 166, 'y': 79}, 'right_eyebrow_upper_middle': {'x': 184, 'y': 72}, 'right_eyebrow_upper_right_quarter': {'x': 204, 'y': 72}}, 'attributes': {'gender': {'value': 'Male'}, 'age': {'value': 26}, 'emotion': {'anger': 98.934, 'disgust': 1.06, 'fear': 0.002, 'happiness': 0.001, 'neutral': 0.001, 'sadness': 0.001, 'surprise': 0.002}}} . . . .

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

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

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

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

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

ockeghem

2021/04/01 06:15

エラーが起きるJSONのサンプル(できるだけ短いもの)を追記してください。
Kokku

2021/04/01 06:16

追記しました
ockeghem

2021/04/01 06:20

ありがとうございます。行頭の0, 1, ... もデータに含まれますか?
Kokku

2021/04/01 06:21

いいえ、含まれません。実際に使いたいデータはlandmark以降です。
退会済みユーザー

退会済みユーザー

2021/04/01 06:36

キーや値の文字列に'は含まれていないので、Unixなら tr \' \" < sample.json | jq . これで十分だと思います。
ockeghem

2021/04/01 06:40

データ中に、シングルクォート、ダブルクォート、\ は含まれますか?
Kokku

2021/04/01 06:54

シングルクォーテーションのみです
ockeghem

2021/04/01 07:29

Kenji.Noguchi さんが指摘されているように tr コマンドで十分かと思いますが、動作環境はWindowsだったりましすか?
Kokku

2021/04/01 08:38

windowsです
guest

回答3

0

ベストアンサー

シングルクォーテーションをダブルクォーテーションに置換するコード

本当はヒントを出して自分で作ってもらうのが筋なのですが、ヒントを考えるのが難しいので、コード例を示します。

python

1def findfiles(pattern, folder='./'): 2 from glob import glob 3 return glob(folder + '/' + pattern) 4 5def check_and_mkdir(folder): 6 from os.path import isdir 7 from os import makedirs 8 if not isdir(folder) : 9 makedirs(folder) 10 11def readtextfile(filename): 12 with open(filename, 'r') as f: 13 return f.read() 14 15def writetextfile(text, filename): 16 with open(filename, 'w') as f: 17 f.write(text) 18 19def sq_to_dq(text): 20 return text.replace("'", '"') 21 22if __name__ == '__main__': 23 from os.path import basename 24 import argparse 25 parser = argparse.ArgumentParser(description='convert single-quote to double-quote') 26 parser.add_argument('-s', '--sourcedir', nargs=1, default='./') 27 parser.add_argument('-t', '--targetdir', nargs=1, default='./target') 28 parser.add_argument('-p', '--pattern', nargs=1, default='*.json') 29 args = parser.parse_args() 30 31 check_and_mkdir(args.targetdir) 32 for filename in findfiles(args.pattern, folder=args.sourcedir): 33 sq_text = readtextfile(filename) 34 dq_text = sq_to_dq(sq_text) 35 tfilename = args.targetdir + '/' + basename(filename) 36 writetextfile(dq_text, tfilename)

上記のコードをsq2dq.pyという名前で保存して、以下を実行してください。
あとはそれを見て考えてください。

shell

1>python sq2dq.py --help

投稿2021/04/01 12:02

ppaul

総合スコア24670

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

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

0

変換することが自体が目的ではなくて、Pythonプログラミングの勉強の題材として取り上げたということであれば、自分でまず書いてみましょう。

変換することが自体が目的なら、エディターでやればあっという間です。標準のメモ帳でもできる。

投稿2021/04/01 12:00

otn

総合スコア85901

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

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

Kokku

2021/04/01 18:16

エディタで編集可能な事を知りませんでした。教えていただきありがとうございます。
guest

0

そのデータファイルは次の 2 点で通常の JSON ファイルとは異なります。

  • 文字列がダブルクオートではなく、シングルクオートで括られている
  • 1 行に 1 つの JSON オブジェクトが存在する、いわゆる JSON Lines 形式である

ので、シングルクオートをダブルクオートに置換した上で、pandas の read_json で lines=True を指定して読み込めば良いのでは。
参考: pandasでJSON文字列・ファイルを読み込み(read_json) | note.nkmk.me

Python

1import pandas as pd 2 3filename = 'data.jsonl' 4with open(filename) as f: 5 s = f.read() 6 7df = pd.read_json(s.replace("'", '"'), lines=True) 8print(df)

投稿2021/04/01 07:38

編集2021/04/01 07:39
hoshi-takanori

総合スコア7901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問