2011-10-23 12 views
54

को हटाने के इस कोड को लगभग क्या मैं इसे करने के लिए की आवश्यकता है .. बिनाअजगर विभाजन() सीमांकक

for line in all_lines: 
    s = line.split('>') 

यह छोड़कर सभी '>' सीमांकक निकाल देता है।

तो,

<html><head> 

['<html','<head'] 

में बदल जाता है वहाँ विभाजन() विधि लेकिन उपयोग करने के लिए निकालने की बजाय उसे रखने सीमांकक, कोई तरीका है?

इन परिणामों के साथ

..

['<html>','<head>'] 
+17

यह वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन अगर तुम अजगर में HTML पार्स करने के लिए कोशिश कर रहे हैं, मेरी सशक्त अनुशंसा [ब्यूटीफुल सूप] (http://www.crummy.com/software/BeautifulSoup/)। –

+2

यह भी देखें [पाइथन में, मैं एक स्ट्रिंग कैसे विभाजित करता हूं और विभाजक रखता हूं?] (Http://stackoverflow.com/questions/2136556/in-python-how-do-i-split-a-string-and- रख-विभाजक)। – outis

उत्तर

32
d = ">" 
for line in all_lines: 
    s = [e+d for e in line.split(d) if e] 
+3

बन जाएगा जो पूरी तरह से काम करता है ... लेकिन मुझे पूरी तरह से समझ में नहीं आता कि क्या हो रहा है। – some1

+2

@ some1 यह मूल रूप से विभाजन के परिणामों पर पुनरावृत्त करता है और डेलीमीटर को वापस जोड़ता है। "एक सूची है, जहां उस सूची में प्रत्येक तत्व ई + डी है, जहां e line.split (d के परिणामस्वरूप तत्व हैं)), लेकिन केवल अगर ई खाली नहीं है " – JHixson

+7

यह परिणामी सूची के सभी तत्वों के लिए एक डिलीमीटर जोड़ता है, जिसमें एकल-तत्व सूची शामिल नहीं है, जिसमें कोई डिलीमीटर नहीं है ... क्या होगा यदि आप _only_ चाहते हैं कि विभाजन के पहले में डिलीमीटर जोड़ा गया हो तत्वों? –

1

बस इसे तो प्रत्येक तत्व के लिए सरणी/सूची (पिछले एक से अलग) पीछे जोड़ने में इसे करने के लिए अलग हो गए, ">"।

+0

">>" के मामले के बारे में क्या यह सिर्फ ">" – paulm

10

कैसे इस बारे में: विभाजन के साथ HTML

import re 
s = '<html><head>' 
re.findall('[^>]+>', s) 
23

आप को पार्स रहे हैं, तो आप सबसे अधिक संभावना है, गलत कर रहे हैं को छोड़कर यदि आप करने के उद्देश्य से एक एक गोली मार दी स्क्रिप्ट लिख रहे हैं एक निश्चित और सुरक्षित सामग्री फ़ाइल यदि यह किसी भी HTML इनपुट पर काम करना है, तो आप <a title='growth > 8%' href='#something'> जैसे कुछ कैसे संभालेंगे?

वैसे भी, मेरे लिए निम्नलिखित काम करता है:

>>> import re 
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2] 
['<body>', '<table>', '<tr>', '<td>'] 
संबंधित मुद्दे