用Python解析文本文件
我有一个html文件。我需要把这个格式的文本替换掉:[%anytext%]。我了解到,用BeautifulSoup来解析html文件,这个操作很简单。但是,什么是正则表达式呢?我该如何删除并重新写入文本数据呢?
好的,这里有一个示例文件:
<html>
[t1] [t2] ... [tood] ... [sadsada]
Sample text [i8]
[d9]
</html>
Python脚本必须处理所有字符串,把[%]替换成其他字符串,比如:
<html>
* * ... * ... *
Sample text *
*
</html>
我做了什么:
import re
import codecs
fullData = ''
for line in codecs.open(u'test.txt', encoding='utf-8'):
line = re.sub("\[.*?\]", '*', line)
fullData += line
print fullData
这段代码正好实现了我在示例中描述的功能。谢谢大家。
2 个回答
2
看起来你需要处理一个普通的文本文件,找出特定的标记并替换它。根据你描述的任务,标记外面的内容是HTML似乎并不重要。
如果你想把每个出现的 [%anytext%]
替换成 loremipsum
,那么可以用一个简单的:
thenew = theold.replace('[%anytext%]', 'loremipsum')
这段代码就可以了,前提是 theold
是包含文件文本的原始字符串——现在 thenew
就是一个新的字符串,里面的所有标记都被替换掉了——不需要用到正则表达式或者其他复杂的东西。
如果你的任务和这个很不一样,请修改你的问题,详细说明一下!-)
2
如果你想替换掉"[%"和"%]"之间的任何文本,正则表达式(Regex)可以帮你解决这个问题。
代码大概是这样的:
import re
newstring = re.sub("\[%.*?%\]",newtext,oldstring)
这里用的正则表达式是“懒惰”的,也就是说它会匹配从一个"[%"到下一个"%]"之间的所有内容。如果你想让它“贪婪”一些,可以去掉问号。这样的话,它就会匹配从第一个"[%"到最后一个"%]"之间的所有内容。