分页: 1 / 1

[这个问题我又不想问了]求一个替换转义字符的方法

发表于 : 2013-04-09 11:46
Hello World!
https://github.com/NoIE/bedit
bedit 4-9.jpg
我想给程序添加一个替换的功能。

程序下面有两个文本框,查找文本框、替换文本框,我想利用文本框,将 “<br>” 替换为回车,也就是 “\n”,但是如果直接使用

代码: 全选

b.set_text(t.replace(old,new))
,只会将<br>替换成\n,而不是硬回车。现在我的程序是这样的:

代码: 全选

def all_replace(self, old, new):
	"""全文替换,这个函数在 document 类里面。"""
	b = self.get_buffer()
	t = b.get_text(b.get_start_iter(), b.get_end_iter(), False)
	b.set_text(t.replace(old,new))

代码: 全选

def escape(self, string):
	"""手动转换"""
	n = string.replace('\\n','\n')
	n = n.replace('\\t','\t')
	n = n.replace('\\v','\v')
	n = n.replace('\\0','\0')
	return n

代码: 全选

def all_replace(self, button):
	"""全文替换,这个函数调用 document 里的 all_replace 函数。"""
	self.get_document().all_replace(self.escape(self.findFindText.get_text()),self.escape(self.findReplaceText.get_text()))
也就是使用自己编写的 escape 将\n替换为硬回车,但是这样只能替换四个转义字符,又没有什么函数可以替换全部的转义字符呢?

我不想使用 eval,因为 eval("\"abc\"") 会变成 abc 。

Re: 求一个替换转义字符的方法

发表于 : 2013-04-09 11:54
eexpress
sed里面不是有y,一个列表替换成另外一个
难道py里面就没?

Re: [这个问题我又不想问了]求一个替换转义字符的方法

发表于 : 2013-04-09 12:01
Hello World!
仔细想一想,如果程序自动将 “"” 替换成 “\"” 的话,也是一件很麻烦的事情。

另,用一个列表替换成另一个列表,我记得在 php 当中见过,在 pthyon 当中还没有印象。