python - 在 Python 中使用 .replace 方法对文本进行切片
问题描述
我学习了字符串索引、切片和替换方法的工作原理,这就是我在这段代码中使用的。
我能够删除此链接中的前 41 个字符http://urlshortener.io/s/1234abc/?s=https%3A%2F%2Fexample.com%2Fsome_contents%2F
。这是结果。
这是代码:
from tkinter import *
window = Tk()
window.title("URL Slicer")
window.geometry('525x100')
lbl = Label(window, text="URL")
lbl.grid(column=0, row=0)
txt = Entry(window,width=75)
txt.grid(column=1, row=0)
def clicked():
sliced = txt.get()
lbl.configure(text= sliced[41:])
btn = Button(window, text="Start", command=clicked)
btn.grid(column=2, row=0)
window.mainloop()
但是,我仍然想摆脱那些“%2F”,所以我添加了 .replace 方法:
这是代码:
from tkinter import *
window = Tk()
window.title("URL Slicer")
window.geometry('525x100')
lbl = Label(window, text="URL")
lbl.grid(column=0, row=0)
txt = Entry(window,width=75)
txt.grid(column=1, row=0)
def clicked():
sliced = txt.get()
sliced.replace('%2F', '/') //added .replace
lbl.configure(text= sliced[41:])
btn = Button(window, text="Start", command=clicked)
btn.grid(column=2, row=0)
window.mainloop()
(但第二个代码的结果与第一个相同)
链接应该是:example.com/some_contents/
解决方案
Pythonstr.replace
不是“就地”方法;相反,它返回一个副本。因此,您需要将操作分配回变量以存储结果:
x = 'http://urlshortener.io/s/1234abc/?s=https%3A%2F%2Fexample.com%2Fsome_contents%2F'
x = x.replace('%2F', '/')
print(x)
http://urlshortener.io/s/1234abc/?s=https%3A//example.com/some_contents/
更好的解决方案是使用专门构建的urllib
:
from urllib import parse
x = 'http://urlshortener.io/s/1234abc/?s=https%3A%2F%2Fexample.com%2Fsome_contents%2F'
x = parse.unquote(x)
print(x)
http://urlshortener.io/s/1234abc/?s=https://example.com/some_contents/
推荐阅读
- sql - Oracle SQL - 获取去年当月的记录
- robotframework - 网络路由器的 Robotframework 和 SSHLibrary 问题
- arrays - 复制工作表 2 中的一整行,其中包含工作表 1 上 A 列中的任何值
- sql - 表达式返回不正确的答案
- docker - 如何将 Docker 日志连接到 Sentry 服务
- c++ - C++模板类:运行时给出的模板参数,如何避免重复的大开关情况?
- jquery - 带有按钮的 Jquery 警报并在单击时加载一个 dirrent 页面
- scala - spark- scala:如何从.dat文件中读取数据并对其进行转换并最终存储在HDFS中
- reactjs - 子组件中输入字段的Reactjs handleChange
- ruby-on-rails - 执行作为字符串接收的日期时间命令