s= "<body><ol><li>coffee,milk,water</li><li>banana,apple</li><li>tea</li></ol></body>"
s1 = "<body><table border=\"1\"><tr><td>1</td><td>coffee</td><td>milk</td><td>water</td></tr><tr><td>2</td><td>banana</td><td>apple</td><td></td></tr><tr><td>3</td><td>tea</td><td></td><td></td></tr></table></body>"
assert lists2tables(s) == s1
s= "<body><ol><li>coffee,milk,water</li><li>banana,apple</li><li>tea</li></ol><ol><li>banana,apple</li><li>tea</li></ol></body>"
s1 = "<body><table border=\"1\"><tr><td>1</td><td>coffee</td><td>milk</td><td>water</td></tr><tr><td>2</td><td>banana</td><td>apple</td><td></td></tr><tr><td>3</td><td>tea</td><td></td><td></td></tr></table><table border=\"1\"><tr><td>1</td><td>banana</td><td>apple</td></tr><tr><td>2</td><td>tea</td><td></td></tr></table></body>"
assert lists2tables(s) == s1
你这题目理解错了吧?我看是说 s = “<ol><li>xxx</li></ol>” 这种格式,为啥你写的是直接1,2,3
import re
s = "<ol> \
<li>coffee, mile, water</li> \
<li>banana, apple</li> \
<li>tea</li> \
</ol>"
table = s.replace("<ol>", "<table style='border=1'>") \
.replace("</ol>", "</table>") \
.replace("<li>", "<tr><td>") \
.replace("</li>", "</td>") \
.replace(",", "</td><td>")
print(table)
import bs4
def lists2tables(s):
soup = BeautifulSoup(s, 'html.parser')
#print (soup.find_all("ol"))
res=""
ols=soup.find_all("ol")
for ol in ols:
table=""
table+="<table border="1">"
conter=1
lis=ol.find_all("li")
#print (soup.li.string.split(","))
length=0
#print (len(soup.li.string.split(",")))
for i in lis:
a=len(i.string.split(","))
#print (i,a)
if length < len(i.string.split(",")):
length=a
for li in lis:
table+="<tr><td>"
table+=str(conter)
table+="</td>"
#print (li.string)
comm=li.string.split(",")
if len(comm)<length:
for i in range (len(comm),length):
comm.append("")
#print (comm)
for i in comm:
table+="<td>"
table+=i
table+="</td>"
table+="</tr>"
conter+=1
table+="</table>"
res+=table
res+="</body>"
return res