在Python中删除字符串中间的连续符

时间:2013-04-14 16:23:34

标签: python line-breaks

Google maps 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', "") 

将不起作用,.i.e。,它返回相同的字符串而不替换'\ n',因为行继续符。

当我加倍反斜杠

时会发生同样的事情
results_str.replace('\\n', "") 

任何提示?

2 个答案:

答案 0 :(得分:10)

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

你真是太近了。 \是字符串文字中的转义字符,因此您必须将其加倍,或使用原始字符串:

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

还要记住Python字符串是不可变的:replace()返回一个新字符串,因为现有字符串无法修改。如果要保留更改的字符串,则必须将其分配给某个名称,例如原始名称:

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

虽然您可能希望以不关心换行符的方式处理数据。这看起来像JSON,所以不应该尝试自己解析它,你应该使用Python json模块。

答案 1 :(得分:0)

这是一个JSON响应。您应该使用json模块来解析字符串:

,而不是试图弄乱字符串
import json
result = b'{\n   "destination_addresses" : ...'
obj = json.loads(obj.decode('utf-8'))