Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用.replace方法对文本进行切片_Python_Tkinter - Fatal编程技术网

在Python中使用.replace方法对文本进行切片

在Python中使用.replace方法对文本进行切片,python,tkinter,Python,Tkinter,我将学习字符串索引、切片和替换方法的工作原理,这就是我在这段代码中使用的方法 我能够删除此链接中的前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 = Lab

我将学习字符串索引、切片和替换方法的工作原理,这就是我在这段代码中使用的方法

我能够删除此链接中的前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()
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()
但是,我仍然希望删除那些“%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()
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/

Python不是“就地”方法;相反,它返回一个副本。因此,您需要为存储结果的操作重新分配变量:

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/

在您的示例中,都设置了X='(只有一个链接可以被切片)。我想在“txt=Entry(window,width=75)”中粘贴多个相同类型的不同链接,然后单击开始按钮。使用函数和列表理解(或
map
)将函数应用于输入序列。我从未使用过
tkinter
,但我认为您面临的问题并非特定于
tkinter