Python 删除所有非字母字符,保留字符串中的空格

Python 删除所有非字母字符,保留字符串中的空格,python,python-3.x,Python,Python 3.x,我不是程序员。我是一名艺术家,正在为我正在制作的艺术装置学习Python。我已经在Youtube和Stackoverflow上做了这么多 也就是说 我从API中获取文本,然后将其显示在标签中。原始文本如下所示: a = {"word":"hello","synonyms":["hi","how-do-you-do","howdy","hullo"]} for item in a['synonyms']: print(item) {“word”:“你好”,“同义词”:[“你好”,“你

我不是程序员。我是一名艺术家,正在为我正在制作的艺术装置学习Python。我已经在Youtube和Stackoverflow上做了这么多

也就是说

我从API中获取文本,然后将其显示在标签中。原始文本如下所示:

a = {"word":"hello","synonyms":["hi","how-do-you-do","howdy","hullo"]}
for item in a['synonyms']:
     print(item)
{“word”:“你好”,“同义词”:[“你好”,“你好”,“你好”,“你好”,“你好”]}
,这些词会根据用户的输入而变化

我只想显示括号内的单词,没有标点符号。经过多次堆栈溢出后,我发现
re.sub(r“\W”,“text,flags=re.I)
(亲爱的上帝,我不知道它是什么意思,只是W,W表示字母/非字母)。这给了我:

“wordhellosynonymshihowdoyoudohowdyhullo

唉。我该如何保留我的空间呢?我想我可以自己去掉前17个单词

完整的代码(我很尴尬)。我知道它的一部分被破坏了,我正在一次扑灭一堆火。最终的项目是一个程序,返回用户输入的单词的同义词,然后询问用户输出是否正确。结果最终将显示在一个图表中。输出有时是故意错误的,我不需要修复

'''

导入请求
从tkinter进口*
导入tkinter.messagebox
从tkinter导入字体
进口稀土
导入字符串
根=Tk()
图=Tk()
def创建网格(事件=无):
w=c.winfo_width()#获取画布的当前宽度
h=c.winfo_height()#获取画布的当前高度
c、 删除(“网格线”)只会删除网格线
#以100为单位创建所有垂直线
对于范围(0,w,100)内的i:
c、 创建网格线([(i,0),(i,h)],tag='grid\u line')
#以100为单位创建所有水平线
对于范围(0,h,100)内的i:
c、 创建网格线([(0,i),(w,i)],tag='grid\u line')
c=画布(图形,高度=1600,宽度=1600,背景为白色)
c、 打包(填充=两者,展开=真)
c、 绑定(“”,创建网格)
#用于按enter键进行查询,而不是单击鼠标
#“忘记”对象删除按钮和小部件。
#应该找出超时、重新启动或后退按钮。
def onReturn(*args):
command=Buttonclick()
按钮。打包忘记(按钮1)
条目1.打包忘记()
tkinter.messagebox.showinfo(“帮助!”,“此安装测量了synoymns交付的准确性。在下一个窗口中,如果同义词正确,请选择“是”;如果同义词不正确,请选择“否”。)
answer=tkinter.messagebox.askquestion(“准确?”,“同义词准确?”)
##即时的上方和下方是messagebox文本。最终将连接到网格。
如果回答=“是”:
打印(“谢谢!”)
如果答案=“否”:
打印(“操,对不起。”)
###为消息框添加是/否操作!
#通过鼠标或enter键按下按钮时获取用户条目。
def按钮单击()
条目_1.get()
#这是获取同义词的API-url必须是www.urlURL.url.com/words/ENTRY HERE!!/typeof
#别碰这个,这是魔法,我无法控制。
url=”https://wordsapiv1.p.rapidapi.com/words/“+Entry_1.get()+”/synonyms”
标题={
“x-rapidapi-host”:“wordsapiv1.p.rapidapi.com”,
“x-rapidapi-key”:“myapikey”
}
punct=“!#$%&”()*+,-./:;?@[\]^_`{|}~"
response=requests.request(“GET”,url,headers=headers,)
newstring=响应
text=response.text
打印(response.text)
label=label(root,text=re.sub(r“\W”,text,flags=re.I),font=“helv 18”,bg=“black”,fg=“white”,)
label.pack()
测试=按钮(root,text=“按空格键重新启动”,font=“Helv 24”,bg=“红色”,fg=“白色”,command=Spacebar)
testing.bind(“,空格键)
testing.pack()
def Spacebar():
root.configure(background='blue')
根几何(“1600x1600+50+50”)
条目\ u 1=条目(根,bg=“黑色”,fg=“白色”,font=“Helv 48”)
条目1.bind(“,onReturn)
条目1.包(扩展=1)
Button_1=按钮(root,text=“键入单词,按Enter键表示同义词”,font=“Helv 24”,bg=“蓝色”,fg=“白色”,command=Button单击)
按钮1.封装(填充=X,展开=1)
Label.forget()
#初始按钮和文本输入框,大小正确。
root.configure(background='blue')
根几何(“1600x1600+50+50”)
条目\ u 1=条目(根,bg=“黑色”,fg=“白色”,font=“Helv 48”)
条目1.bind(“,onReturn)
条目1.包(扩展=1)
Button_1=按钮(root,text=“键入单词,按Enter键表示同义词”,font=“Helv 24”,bg=“蓝色”,fg=“白色”,command=Button单击)
按钮1.封装(填充=X,展开=1)
root.mainloop()```

您可以使用Json序列化来完成这项工作。从API中,您将得到
Json
格式的响应

import json 

response = <your response>
json_obj = json.loads(response)
strvalue = " ".join(json_obj["synonyms"])
print(strvalue)
导入json
答复=
json_obj=json.load(响应)
strvalue=”“.join(json_obj[“同义词”])
打印(标准值)

Json示例:

您得到的对象称为a或a
dict
,非常棒

如果将其分配给如下变量:

a = {"word":"hello","synonyms":["hi","how-do-you-do","howdy","hullo"]}
for item in a['synonyms']:
     print(item)
然后,您可以这样引用它们:

a = {"word":"hello","synonyms":["hi","how-do-you-do","howdy","hullo"]}
for item in a['synonyms']:
     print(item)

为了让SO帮助您提供一个完整的工作示例,说明您正试图实现的目标,这将非常有用。您得到的是一个JSON字符串。您需要解析JSON。这是一个库

import json
text = '{"word":"hello","synonyms":["hi","how-do-you-do","howdy","hullo"]}'
data = json.loads(text)
print(" ".join(data["synonyms"]))

因为他似乎能够在整个事情上使用正则表达式,我怀疑它已经是JSON了。也许可以在你的代码中添加一些关于序列化的内容,因为否则它将不可避免地导致另一个帖子:)哇,我不习惯人们在论坛上讲礼貌!我想我已经一分钟没有离开Reddit了。你是指对我的项目的解释,还是我我的理论是,他调用了一个在线API,该API返回了一个json,然后他将其字符串化it@Tooluserr/learnpython非常有用!是的,如果你提供了你的代码,并试图更详细地解释你想做什么,那会很有帮助。哈哈,你很善良,而且是对的。我不是程序员。你是对的不是我会得到打字错误,并改正关于ilmia的一式三份