解析

2013-02-11 52 views
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()没有做任何事情,或者至少写入写入文件的内容与读取文件相同。我做错了什么?我还想在日期之后删除长整数和随后的文本,直到逗号,但甚至没有开始这个障碍,因为我甚至无法完成最简单的事情!解析

+3

有很多解析xml和html的模块。帮你一个忙,并使用其中一个...... – StoryTeller 2013-02-11 14:51:13

回答

0

replace的第一个参数中的字符串文字之前加上r。或者将\n更改为\\n

+0

完美工作,即改变\\ n。不知道在哪里添加r。你介意更明确吗?不过,谢谢 – user1478335 2013-02-11 15:00:07

+0

例如,带\ n“'的'r”原始字符串。这是Python中的一种特殊语法。 – Ray 2013-02-11 15:03:26

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解析不会帮助你,但我建议你认真地质疑你为什么这样做,并决定是否是实现最终结果的最佳方式。

+0

谢谢你。我也会尝试与此一起工作。需要试用 – user1478335 2013-02-11 15:24:37

0

对于文本的复杂操作,证据是必须使用正则表达式。
我恳请您学习re模块。你会获得更多的满意度比修补替换()

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

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

+0

谢谢。我会按照你的建议学习重新模块。我仍然很难从文本文件中返回我想要的东西,因此我为自己设定了这个练习。真的想要能够解析任何东西。这只是一组便于使用的数字和文字。 – user1478335 2013-02-11 18:38:54

+1

@ user1478335我延伸我的建议。正则表达式有点困难。而且他们不适合某些分析。有很多解析器和数据分析工具可以比正则表达式更快,更容易和更自信地提供帮助。然而,在你公开的情况下,我会使用正则表达式,因为你的目标很简单。 – eyquem 2013-02-11 19:19:50

+0

@ user1478335除了eyquem的评论,请参阅http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – aquavitae 2013-02-12 06:01:08