7
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi có một chuỗi:
<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>(Nó xuất ra trên hai dòng, do đó phải có một \ n trong đó.
Tôi muốn trích xuất chuỗi ở giữa các thẻ <font></font>. Trong trường hợp này, đó là ngày 28 tháng 7, nhưng nó có thể là một ngày khác hoặc một số khác.
1) Cách tốt nhất để trích xuất giá trị từ giữa các thẻ phông chữ? Tôi đã nghĩ rằng tôi có thể trích xuất mọi thứ ở giữa "> và </.
Chỉnh sửa: Đã xóa câu hỏi thứ hai.
Đã hỏi ngày 27 tháng 10 năm 2011 lúc 3:46Oct 27, 2011 at 3:46
Tụ điện thông lượng tụ điệnFlux Capacitor
1.1814 huy hiệu vàng22 Huy hiệu bạc40 Huy hiệu đồng4 gold badges22 silver badges40 bronze badges
3
Mặc dù có thể phân tích HTML tùy ý với các biểu thức thông thường, nhưng nó thường là một cái bẫy tử thần. Có những công cụ tuyệt vời ngoài kia để phân tích cú pháp HTML, bao gồm cả BeautifulSoup, đó là một lib Python có thể xử lý bị hỏng cũng như HTML khá tốt.
>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28'Sau đó, bạn chỉ cần phân tích ngày:
>>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0)Đã trả lời ngày 27 tháng 10 năm 2011 lúc 4:06Oct 27, 2011 at 4:06
Kojirokojirokojiro
72.1K18 Huy hiệu vàng134 Huy hiệu bạc194 Huy hiệu đồng18 gold badges134 silver badges194 bronze badges
2
Bạn có một loạt các lựa chọn ở đây. Bạn có thể sử dụng trình phân tích cú pháp XML toàn diện như LXML, mặc dù bạn dường như muốn có một giải pháp cụ thể về miền. Tôi sẽ đi với một regex đa dòng:
import re rex = re.compile(r'<font.*?>(.*?)</font>',re.S|re.M) ... data = """<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>""" match = rex.match(data) if match: text = match.groups()[0].strip()Bây giờ bạn có text, bạn có thể biến nó thành một ngày khá dễ dàng:
from datetime import datetime date = datetime.strptime(text, "%b %d")Đã trả lời ngày 27 tháng 10 năm 2011 lúc 4:00Oct 27, 2011 at 4:00
Fahhemfahhemfahhem
4664 Huy hiệu bạc8 Huy hiệu Đồng4 silver badges8 bronze badges
2
Hoặc, bạn có thể chỉ cần sử dụng súp đẹp:
Súp đẹp là trình phân tích cú pháp Python HTML/XML được thiết kế cho các dự án quay vòng nhanh như Scraping Screc
Đã trả lời ngày 27 tháng 10 năm 2011 lúc 4:03Oct 27, 2011 at 4:03
Óscar Lópezóscar LópezÓscar López
228K35 Huy hiệu vàng305 Huy hiệu bạc378 Huy hiệu đồng35 gold badges305 silver badges378 bronze badges
1
GREP có phải là một lựa chọn không?
grep "<[^>]*>(.*)<\/[^>]*>" file(.*) Sẽ phù hợp với nội dung của bạn.
Đã trả lời ngày 27 tháng 10 năm 2011 lúc 3:51Oct 27, 2011 at 3:51
2
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận : ‘Gfg is Best. I love Reading CS from it.’ , tag = “br”
Output : [‘Gfg’, ‘Best’, ‘Reading CS’]
Explanation : All strings between “br” tag are extracted.Cho một chuỗi và thẻ HTML, trích xuất tất cả các chuỗi giữa thẻ được chỉ định. : ‘
Gfg
isBest
I loveReading CS
’ , tag = “h2”
Output : [‘Gfg’, ‘Best’, ‘Reading CS’]
Explanation : All strings between “h2” tag are extracted.
Đầu vào: & nbsp; ‘GFG là tốt nhất. Tôi thích đọc CS từ nó., Tag = Hồi Briêu & nbsp; đầu ra: [‘gfg,’ tốt nhất, ‘Đọc CS,] Giải thích: Tất cả các chuỗi giữa thẻ BR BR được trích xuất. re module this task can be performed. In this we employ, findall() function to extract all the strings by matching appropriate regex built using tag and symbols.
Python3
>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 0 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 1
>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 2>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 3 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 4
>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 5>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 6>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 7 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 9>>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 0
>>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 1>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 3 >>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 3
>>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 4>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 3 >>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 6 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8 >>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 1>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8 import re rex = re.compile(r'<font.*?>(.*?)</font>',re.S|re.M) ... data = """<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>""" match = rex.match(data) if match: text = match.groups()[0].strip() 0 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8 >>> datetime.strptime(BS.font.contents[0].strip(), '%b %d') >>> datetime.datetime(1900, 7, 28, 0, 0) datetime.datetime(1900, 7, 28, 0, 0) 1>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8
import re rex = re.compile(r'<font.*?>(.*?)</font>',re.S|re.M) ... data = """<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>""" match = rex.match(data) if match: text = match.groups()[0].strip() 5>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 3 import re rex = re.compile(r'<font.*?>(.*?)</font>',re.S|re.M) ... data = """<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>""" match = rex.match(data) if match: text = match.groups()[0].strip() 7
>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 5>>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 6from datetime import datetime date = datetime.strptime(text, "%b %d") 0 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 8 >>> from BeautifulSoup import BeautifulSoup as BSHTML >>> BS = BSHTML(""" ... <font face="ARIAL,HELVETICA" size="-2"> ... JUL 28 </font>""" ... ) >>> BS.font.contents[0].strip() u'JUL 28' 9from datetime import datetime date = datetime.strptime(text, "%b %d") 3
Output:
Chuỗi ban đầu là: GFG là tốt nhất. Tôi thích đọc CS từ nó. Các chuỗi được trích xuất: [‘GFG,’ tốt nhất, ‘Đọc CS,]
The Strings extracted : [‘Gfg’, ‘Best’, ‘Reading CS’]