81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
def main():
|
|
maxwidth = 100
|
|
print_start()
|
|
count = 0
|
|
while True:
|
|
try:
|
|
line = input()
|
|
if count == 0:
|
|
color = "lightgreen"
|
|
elif count % 2:
|
|
color = "white"
|
|
else:
|
|
color = "lightyellow"
|
|
print_line(line, color, maxwidth)
|
|
count += 1
|
|
except EOFError:
|
|
break
|
|
print_end()
|
|
|
|
def print_start():
|
|
print("<table border='1'>")
|
|
|
|
def print_end():
|
|
print("</table>")
|
|
|
|
def print_line(line, color, maxwidth):
|
|
print("<tr bgcolor='{0}'>".format(color))
|
|
fields = extract_fields(line)
|
|
for field in fields:
|
|
if not field:
|
|
print("<td></td>")
|
|
else:
|
|
number = field.replace(",", "")
|
|
try:
|
|
x = float(number)
|
|
print("<td align='right'>{0:d}</td>".format(round(x)))
|
|
except ValueError:
|
|
field = field.title()
|
|
field = field.replace(" And ", " and ")
|
|
field = escape_html(field)
|
|
if len(field) <= maxwidth:
|
|
print("<td>{0}</td>".format(field))
|
|
else:
|
|
print("<td>{0:.{1}} ...</td>".format(field, maxwidth))
|
|
print("</tr>")
|
|
|
|
def extract_fields(line):
|
|
fields = []
|
|
field = ""
|
|
quote = None
|
|
for c in line:
|
|
if c in "\"'":
|
|
if quote is None: # начало строки в кавычках
|
|
quote = c
|
|
elif quote == c: # конец строки в кавычках
|
|
quote = None
|
|
else:
|
|
field += c
|
|
# другая кавычка внутри строки в кавычках
|
|
continue
|
|
if quote is None and c == ",": # end of a field
|
|
fields.append(field)
|
|
field = ""
|
|
else:
|
|
field += c
|
|
# добавить символ в поле
|
|
if field:
|
|
fields.append(field) # добавить последнее поле в список
|
|
return fields
|
|
|
|
def escape_html(text):
|
|
text = text.replace("&", "&")
|
|
text = text.replace("<", "<")
|
|
text = text.replace(">", ">")
|
|
return text
|
|
|
|
|
|
main()
|