用Python解析文本文件

2 投票
2 回答
1397 浏览
提问于 2025-04-15 21:15

我有一个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)

这里用的正则表达式是“懒惰”的,也就是说它会匹配从一个"[%"到下一个"%]"之间的所有内容。如果你想让它“贪婪”一些,可以去掉问号。这样的话,它就会匹配从第一个"[%"到最后一个"%]"之间的所有内容。

撰写回答