[英]Eliminate unwanted characters from JSON file using different threads (Python)
在我的python文件中,我创建了一个名为Download
的类。 该类所在的代码:
import requests, json, os, pytube, threading
class Download:
def __init__(self, url, json=False, get=False, post=False, put=False, unwanted="", wanted="", unwanted2="", wanted2="", unwanted3="", wanted3=""):
self.url = url
self.json = json
self.get = get
self.post = post
self.put = put
self.unwanted = unwanted
self.wanted = wanted
self.unwanted2 = unwanted2
self.wanted2 = wanted2
self.unwanted3 = unwanted3
self.wanted3 = wanted3
def downloadJson(self):
if self.get is True:
downloadJson = requests.get(self.url)
downloadJson = str(downloadJson.content)
downloadJsonS = str(downloadJson) # This saves the downloaded JSON file as string
if self.json is True:
with open("downloadedJson.json", "w") as writeDownloadedJson:
writeDownloadedJson.write(json.dumps(downloadJson))
writeDownloadedJson.close()
with open("downloadedJson.json", "r") as replaceUnwanted:
a = replaceUnwanted.read()
x = a.replace(self.unwanted, self.wanted)
# y = a.replace(self.unwanted2, self.wanted2)
# z = a.replace(self.unwanted3, self.wanted3)
print(x)
with open("downloadedJson.json", "w") as writeUnwanted:
# writeUnwanted.write(y)
# writeUnwanted.write(z)
writeUnwanted.write(x)
else:
# with open("downloadedJson.json", "w")as j:
# j.write(downloadJsonS)
# j.close()
pass
我自己编写了所有这些内容,而且我知道它是如何工作的。 我的目标是删除JSON文件下载后出现的所有不需要的字符,例如: \\\\ n , \\'或\\ n 。 我在__init__()
函数中有很多参数,例如__init__(unwanted="", wanted="", unwanted2="")
等。
这样,在将任何字符添加到unwanted
参数时,例如: \\\\ n ,它应将所有这些字符替换为一个空格。 正确完成,并且可以正常工作。 注释的代码行是我正在使用的代码行,但是没有用。 它只会替换仅1个参数中的字符。
有没有什么方法可以使用线程为每个参数传递所有不需要的字符。 如果无法使用线程,还有其他选择吗?
顺便说一下,我执行类的文件:( main.py ):
from downloader import Download
with open("url.txt", "r")as url:
x = Download(url.read(), get=True, json=True, unwanted="\\n")
x.downloadJson()
谢谢
您可以一个接一个地应用替换项:
x = a.replace(self.unwanted, self.wanted)
x = x.replace(self.unwanted2, self.wanted2)
x = x.replace(self.unwanted3, self.wanted3)
您也可以将替换项链接在一起,但这很快就会变得很难阅读:
x = a.replace(...).replace(...).replace(...)
顺便说一句,使用多个(unwanted, wanted)
对列表可能要容易wantedN
,而不是具有多个unwantedN
wantedN
和wantedN
,如下所示:
def __init__(self, url, json=False, get=False, post=False, put=False, replacements=[]):
self.url = url
self.json = json
self.get = get
self.post = post
self.put = put
self.replacements = replacements
然后,您可以循环执行替换:
x = a
for unwanted, wanted in self.replacements:
x = x.replace(unwanted, wanted)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.