0
savetonotherfile.write(
        openfileagain.read().replace(
            "b'<HTML>\n<HEAD>\n<TITLE> Euro Millions Winning Numbers</TITLE>\n<BODY>\n<PRE> Euro Millions Winning Numbers\n\nNo., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2,  Jackpot,   Wins\n",
            '').replace(
            "\n<HR><B>All lotteries below have exceeded the 180 days expiry date</B><HR>No., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2,  Jackpot,   Wins\n",
            '').replace(
            "\n\nThis page shows all the draws that used any machine and any ball set in any year.\n\nData obtained from http://lottery.merseyworld.com/Euro/\n</PRE>\n</BODY></HTML>\n'",
            ''))

我正在尝试使用上面的行从文本文件中删除文本,格式 b'<HTML>\n<HEAD>\n<TITLE> Euro Millions Winning Numbers</TITLE>\n<BODY>\n<PRE> Euro Millions Winning Numbers\n\nNo., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2, Jackpot, Wins\n562, Fri, 8,Feb,2013, 09,11,14,34,44,10,11, 27886637, 0\n561, Tue, 5,Feb,2013, 06,25,31,40,45,06,07, 19070109, 0\n560, Fri, 1,Feb,2013, ...为一些要删除的文本、更多的数字、更多的要删除的文本。没有做任何事情,.replace()或者至少写入写入文件的内容与读取文件相同。我做错了什么?我还想删除日期之后的长整数和后续文本直到逗号,但还没有开始跨栏,因为我什至无法完成最简单的事情!

4

3 回答 3

0

Add r before the string literals in the first argument of replace. Or change \n to \\n.

于 2013-02-11T14:51:27.650 回答
0

对于文本的复杂操作,证据是必须使用正则表达式。
我敦促您学习该re模块。你会比修改replace()获得更多的满足

关于你给出的代码,执行是这样的:
- 获取处理程序文件中的文本openfileagain:创建一个字符串 #1
- 替换这个文本的一部分,这个字符串 #1 的 id est:创建一个新的字符串 #2
- 替换文本的第二部分,即替换字符串#2 中存在的所述部分:创建第三字符串#3
- 替换第三部分,即替换字符串#3 中存在的该部分:创建一个字符串 #4。

使用正则表达式时,您将提供由 3 个部分组成的信息来替换,并且re机器将直接从字符串 #1 创建相同的字符串 #4,而无需通过字符串 #2 和 #3。

于 2013-02-11T16:36:03.560 回答
0

尝试像这样使用 html 并不是一个好主意 - 通常最好使用 html 解析模块,例如beautifulsoup(假设是 html - 请参阅下面的编辑)。无论哪种方式,如果您将代码分解为更小的步骤,并排除长替换字符串,您将能够更轻松地找到错误。例如:

replace_map = (('first string', 'replace with this'),
               ('second string', 'replace the second with this'))

with open(inputfilename, 'rt') as infile:
    output = infile.read()
    for fromstr, tostr in replace_map:
        output = output.replace(fromstr, tostr)

with open(outputfilename, 'wt') as outfile:
    outfile.write(output)

编辑: 发布我的答案后,我注意到您似乎正在解析表单的文本"b'<html code/>'" 这是正确的吗?看起来您有一个描述 python 字节对象的字符串。如果这确实是您正在做的事情,那么 html 解析将无济于事,但我建议您认真质疑为什么要这样做,并确定它是否是实现最终结果的最佳方式。

于 2013-02-11T14:53:46.100 回答