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

软件和网站开发以及相关技术探讨
回复
头像
Hello World!
帖子: 3051
注册时间: 2008-06-23 15:19
系统: ���������
来自: 北欧某国
联系:

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

#1

帖子 Hello World! » 2013-04-09 11:46

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 。
上次由 Hello World! 在 2013-04-09 11:59,总共编辑 1 次。
http://noie.name 网站改版中。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#2

帖子 eexpress » 2013-04-09 11:54

sed里面不是有y,一个列表替换成另外一个
难道py里面就没?
● 鸣学
头像
Hello World!
帖子: 3051
注册时间: 2008-06-23 15:19
系统: ���������
来自: 北欧某国
联系:

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

#3

帖子 Hello World! » 2013-04-09 12:01

仔细想一想,如果程序自动将 “"” 替换成 “\"” 的话,也是一件很麻烦的事情。

另,用一个列表替换成另一个列表,我记得在 php 当中见过,在 pthyon 当中还没有印象。
http://noie.name 网站改版中。
回复