Python 删除Tkinter条目中的最后一个空行
python版本3.9.2 脚本的作用和问题的根源 下面的脚本将'\n'替换为'-o-name',以分隔每个项目 输入将始终采用此格式(从excel复制) 请注意,它将始终有空行,因为复制和粘贴创建了它 期望输出:Python 删除Tkinter条目中的最后一个空行,python,regex,tkinter,Python,Regex,Tkinter,python版本3.9.2 脚本的作用和问题的根源 下面的脚本将'\n'替换为'-o-name',以分隔每个项目 输入将始终采用此格式(从excel复制) 请注意,它将始终有空行,因为复制和粘贴创建了它 期望输出: A.class -o -name B.class -o -name C.class 但输入的空白行产生问题。 脚本的输出: A.class -o -name B.class -o -name C.class -o -name 简言之,我希望每个'\n',但最后一行都替换为
A.class -o -name B.class -o -name C.class
但输入的空白行产生问题。
脚本的输出:A.class -o -name B.class -o -name C.class -o -name
简言之,我希望每个'\n',但最后一行都替换为'-o-name'
资料来源:
from tkinter import *
import re
win = Tk()
win.title("Find command for evidence doc")
win.resizable(0,0)
#Converting
def replace():
# removing blank line <- THIS needs to be improved
original = entry.get("1.0",'end')
original = re.sub(r'\n\s*\n','\n',original,re.MULTILINE)
print(original)
# Replace .java to .class
javaToClass = re.compile(re.escape('.java'), re.IGNORECASE)
converted = \
"find . \( -name " + javaToClass.sub('.class',original).replace("\n", " -o -name ") + "\) -exec ls -gG --color {} \; | grep '[^/]*$'i"
# Copy to clipboard
clip = Tk()
clip.withdraw()
clip.clipboard_clear()
clip.clipboard_append(converted)
clip.destroy()
# output
output.delete("1.0",'end')
output.insert(END, str(converted))
# Componants
l1 = Label(win, text="Enter text:")
entry = Text(win, width=70, height=15, wrap=WORD)
button = Button(win, text="Convert", width=20)
l2 = Label(win, text="Converted text: (auto copied to clipboard)")
output = Text(win, width=70, height=15, wrap=WORD)
l1.grid(row=1, column=1, padx=5, sticky=W)
entry.grid(row=2, column=1, columnspan=2, padx=5, pady=(0,10))
button.grid(row=3, column=1, columnspan=2, pady=5)
l2.grid(row=4, column=1, padx=5, sticky=W)
output.grid(row=5, column=1, columnspan=2, padx=5, pady=(0,10))
button.configure(command=replace)
win.mainloop()
从tkinter导入*
进口稀土
win=Tk()
win.title(“证据文件查找命令”)
win.可调整大小(0,0)
#转换
def replace():
#删除空行您可以更改模式以检测所有后跟字母的\n
然后将匹配的\n
替换为-o-name
,并使用strip()
删除最后的\n
string = '''A.java
B.java
C.java
'''
pattern = r'\n(?=[a-zA-Z])'
replace = '-o -name '
re.sub(pattern, replace, string).strip()
#'A.java -o -name B.java -o -name C.java'
您可以更改模式,以检测所有后跟字母的\n
然后将匹配的\n
替换为-o-name
,并使用strip()
删除最后的\n
string = '''A.java
B.java
C.java
'''
pattern = r'\n(?=[a-zA-Z])'
replace = '-o -name '
re.sub(pattern, replace, string).strip()
#'A.java -o -name B.java -o -name C.java'
我相信这可以用re来完成,但是有一种简单的python方法,如果输入总是采用这种格式的话
如果你能在一个列表中得到文件名,然后在列表中添加“.class-o-name”并加入它们,那么问题就解决了
将每个元素与“.class-o-name”连接,这样最后一个元素就不在了,怎么样
finished = " -o -name ".join(i.replace(".jave",".class") for i in orignal.split())
我相信这可以用re来完成,但是有一种简单的python方法,如果输入总是采用这种格式的话
如果你能在一个列表中得到文件名,然后在列表中添加“.class-o-name”并加入它们,那么问题就解决了
将每个元素与“.class-o-name”连接,这样最后一个元素就不在了,怎么样
finished = " -o -name ".join(i.replace(".jave",".class") for i in orignal.split())
如果字符串以'\n'
结尾,请使用.strip()
将其删除。如果字符串以'\n'
结尾,请使用.strip()
将其删除。