6

バイトから文字列への変換後、Google マップ API からの標準的な戻り値は次のようになります。

b'{\n   "destination_addresses" : [ "Washington, DC, USA" ],\n   "origin_addresses" : [ "New York, NY, USA" ],\n   "rows" : [\n      {\n         "elements" : [\n            {\n               "distance" : {\n                  "text" : "370 km",\n                  "value" : 369720\n               },\n               "duration" : {\n                  "text" : "3 hours 48 mins",\n                  "value" : 13672\n               },\n               "status" : "OK"\n            }\n         ]\n      }\n   ],\n   "status" : "OK"\n}\n'

さらに処理を進めるために、まずすべての改行文字を削除したいと思います。しかし、私はそれを行う方法がわかりません

results_str.replace('\n', "") 

つまり、行継続文字のため、'\n' を置換せずに同じ文字列を返します。

バックスラッシュを二重にすると同じことが起こります

results_str.replace('\\n', "") 

任意のヒント?

4

2 に答える 2

14
results_str.replace('\n', "") 

あなたはとても近いです。は\文字列リテラルのエスケープ文字であるため、2 倍にするか、生の文字列を使用する必要があります。

results_str.replace('\\n', "") 
results_str.replace(r'\n', "") 

また、Python 文字列は不変replace()であることに注意してください。既存の文字列を変更できないため、新しい文字列を返します。変更された文字列を保持したい場合は、元の名前などの名前に割り当てる必要があります。

results_str = results_str.replace(r'\n', "")

ただし、改行を気にしない方法でデータを処理したい場合があります。これは JSON のように見えるので、自分で解析しようとするのではなく、おそらく Pythonjsonモジュールを使用する必要があります。

于 2013-04-14T16:25:34.320 に答える
1

これは JSON 応答です。文字列をいじる代わりに、jsonモジュールを使用して文字列を解析する必要があります。

import json
result = b'{\n   "destination_addresses" : ...'
obj = json.loads(obj.decode('utf-8'))
于 2013-04-14T16:31:08.820 に答える