首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未从json GET响应中删除"\n“的代码

未从json GET响应中删除"\n“的代码
EN

Stack Overflow用户
提问于 2019-02-24 08:41:44
回答 3查看 238关注 0票数 1

因此,我尝试从Json GET请求中删除一堆"\n“。但是,当我创建响应的字符串副本并尝试.replace("\n","")时,没有删除任何内容

代码语言:javascript
复制
def fetchProxy():
    return urllib.request.urlopen("https://api.getproxylist.com/proxy").read()


def createList():
    afile = open("proxies.json", "a")

    i = 1
    for i in range(3):
        proxy = str((fetchProxy())).replace("\n","",-1)
        afile.write(proxy + "\n")
    afile.close()

这是用于获取json并将其放入文件中的所有代码(超过3次)。此外,目前整个项目中几乎所有的代码。

示例json:

代码语言:javascript
复制
b'{\n    "_links": {\n        "_self": "\/proxy",\n        "_parent":
"\/"\n    },\n    "ip": "177.23.106.107",\n    "port": 4145,\n
"protocol": "socks4",\n    "anonymity": "high anonymity",\n
"lastTested": "2019-02-23 23:53:48",\n    "allowsRefererHeader":
true,\n    "allowsUserAgentHeader": true,\n    "allowsCustomHeaders":
true,\n    "allowsCookies": true,\n    "allowsPost": true,\n
"allowsHttps": true,\n    "country": "BR",\n    "connectTime":
"0.692",\n    "downloadSpeed": "155.000",\n    "secondsToFirstByte":
"1.128",\n    "uptime": "45.621"\n}'
EN

回答 3

Stack Overflow用户

发布于 2019-02-24 09:51:01

这里有一个小技巧--基本上是一行。由于在JSON中通常忽略换行符和其他空格,因此您可以利用这一点,将response转换为Python字典,然后再将其转换回JSON。

代码语言:javascript
复制
import json
import urllib.request


def fetchProxy():
    response = urllib.request.urlopen("https://api.getproxylist.com/proxy").read()
    return json.dumps(json.loads(response))  # Clean up.

def createList():
    proxy = fetchProxy()  # Only do it once.

    with open("proxies.json", "a") as file:
        for _ in range(3):
            file.write(proxy + "\n")


if __name__ == '__main__':

    createList()

之后的proxies.json内容:

代码语言:javascript
复制
{"_links": {"_self": "/proxy", "_parent": "/"}, "ip": "177.66.42.126", "port": 4145, "protocol": "socks4", "anonymity": "high anonymity", "lastTested": "2019-02-27 12:43:02", "allowsRefererHeader": true, "allowsUserAgentHeader": true, "allowsCustomHeaders": true, "allowsCookies": true, "allowsPost": true, "allowsHttps": true, "country": "BR", "connectTime": "0.773", "downloadSpeed": "135.000", "secondsToFirstByte": "1.281", "uptime": "96.580"}
{"_links": {"_self": "/proxy", "_parent": "/"}, "ip": "177.66.42.126", "port": 4145, "protocol": "socks4", "anonymity": "high anonymity", "lastTested": "2019-02-27 12:43:02", "allowsRefererHeader": true, "allowsUserAgentHeader": true, "allowsCustomHeaders": true, "allowsCookies": true, "allowsPost": true, "allowsHttps": true, "country": "BR", "connectTime": "0.773", "downloadSpeed": "135.000", "secondsToFirstByte": "1.281", "uptime": "96.580"}
{"_links": {"_self": "/proxy", "_parent": "/"}, "ip": "177.66.42.126", "port": 4145, "protocol": "socks4", "anonymity": "high anonymity", "lastTested": "2019-02-27 12:43:02", "allowsRefererHeader": true, "allowsUserAgentHeader": true, "allowsCustomHeaders": true, "allowsCookies": true, "allowsPost": true, "allowsHttps": true, "country": "BR", "connectTime": "0.773", "downloadSpeed": "135.000", "secondsToFirstByte": "1.281", "uptime": "96.580"}
票数 1
EN

Stack Overflow用户

发布于 2019-02-24 09:05:12

此调用:

代码语言:javascript
复制
    str((fetchProxy()))

将转义字符\n括起来。您想要调用替换为

代码语言:javascript
复制
    proxy = str((fetchProxy())).replace("\\n","")

或者,如果您希望将字符串值而不是字节保存在文件中:

代码语言:javascript
复制
    proxy = fetchProxy().decode().replace('\n', '')
票数 0
EN

Stack Overflow用户

发布于 2019-02-24 09:05:59

您必须这样做,其中.replace("\n", "")是一个变量(我正在将您的第一个函数更改为一个变量,以便在第二个函数中可用,我希望这不会影响想要的结果):

代码语言:javascript
复制
fetchProxy= return urllib.request.urlopen("https://api.getproxylist.com/proxy").read()
fetchProxy=str(fetchProxy)
fetchProxy=fetchProxy.replace("\n", "")


def createList():
    afile = open("proxies.json", "a")

    i = 1
    for i in range(3):
        proxy = fetchProxy 
#str((fetchProxy())).replace("\n","",-1) 
#I am not sure why the last argument in the .replace is -1, because the last argument is number of 
#occurences to be replaced and default is all, if left empty
        afile.write(proxy + "\n")
    afile.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54847676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档