解析

2013-02-11 78 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