2017-04-12 19 views
0

でYAMLを使用しているとき、私持っているJSON辞書型に変換する際のトラブルを作成し、以下のテキスト(パンダのデータフレーム内のセルの1つ):未知のエスケープ文字の問題パイソン

{"options_selected":{"Ideas":"0"},"criterion_feedback":{}, 
    "overall_feedback":"...and that\'s something I want to learn too. ", 
    "submission_uuid":"b195603a-60f5-11e4-95a7-0a7da95da37f"} 

私はコード

df['POST'] = df['POST'].apply(yaml.load) 

それは次のようなエラーがスローされます:

found unknown escape character "'" 
    in "<unicode string>", line 1, column 174: 
    ... that\'s something I want to learn too ... 

私は、特定のことを印刷するときに使用してはこれですセルは、これは私が

df.ix[7, 'POST'] 

>> that\\\'s 

得たものを私はすでにSOとYAMLガイドの他の関連する質問をチェックしているが、解決策が何であるかを見つけ出すことができませんでした。誰か助けてもらえますか?

+0

あなたは 'JSON'の代わりに' YAML'を適用しようとしているようです。代わりに 'json.loads'を試してください – MaxU

+0

@MaxUありがとう!同様のエラー 'Invalid \ escape:line 1 column 173'が発生しました! – renakre

+2

@MaxU:YAMLはJSONのスーパーセットです。つまり、YAMLパーサは有効なJSONドキュメントを解析します。 – larsks

答えて

1

JSONで許可されていないため、エスケープ文字を最初に削除する必要があります。

import json 

j = '{"options_selected":{"Ideas":"0"},"criterion_feedback":{}, "overall_feedback":"...and that\'s something I want to learn too. ", "submission_uuid":"b195603a-60f5-11e4-95a7-0a7da95da37f"}' 

json.loads(j.replace("\\'", "'")) 

編集:

@larksが

that ' doesn't need to be escaped (because the string is enclosed in double quotes)

、コメントで言ったし、実際にあなたの問題が再現するのは難しいですよう:

import yaml 
import json 

data = """ 
    options_selected: 
     Ideas: '0' 
    criterion_feedback: {} 
    overall_feedback": ...and that\'s something I want to learn too. , 
    submission_uuid : b195603a-60f5-11e4-95a7-0a7da95da37f 
""" 

print yaml.load(data) 

j = '{"options_selected":{"Ideas":"0"},"criterion_feedback":{}, "overall_feedback":"...and that\'s something I want to learn too. ", "submission_uuid":"b195603a-60f5-11e4-95a7-0a7da95da37f"}' 

print json.loads(j) 

は、両方の出力は以下となります。

{'overall_feedback"': "...and that's something I want to learn too. ,", 'submission_uuid': 'b195603a-60f5-11e4-95a7-0a7da95da37f', 'options_selected': {'Ideas': '0'}, 'criterion_feedback': {}} 
関連する問題