Tôi sẽ phân hủy vấn đề của bạn thành hai phần:
- Cho một "danh sách phẳng", tạo một danh sách những người con trong đó những người con có độ dài nhất định và danh sách tổng thể có thể được đưa vào một thứ tự "hàng chính" [ví dụ thứ nhất và thứ ba của bạn] hoặc "chuyên ngành chính" [ thí dụ];
- Đưa ra một danh sách các nhóm phụ với các mục chuỗi, tạo ra một bảng HTML từ nó.
Tôi nghĩ rằng hai nhiệm vụ thực sự rất khác biệt và không có gì để đạt được [và nhiều thứ để mất] trong việc đưa chúng lên, vì vậy tôi sẽ rất ngạc nhiên nếu bất kỳ thư viện được thiết kế tốt nào làm như vậy.
Đối với điểm 1, Row-Major rất dễ dàng:
def row_major[alist, sublen]:
return [alist[i:i+sublen] for i in range[0, len[alist], sublen]]
và Cột-Major không tệ như vậy:
def col_major[alist, sublen]:
numrows = [len[alist]+sublen-1] // sublen
return [alist[i::sublen] for i in range[numrows]]
Ví dụ...:
L = ['one','two','three','four','five','six','seven','eight','nine']
for r in row_major[L, 3]: print r
print
for r in col_major[L, 3]: print r
for r in row_major[L, 4]: print r
Tạo ba kết quả mong muốn của bạn [một danh sách mỗi hàng, chưa ở dạng HTML ;-].
Nửa sau của vấn đề - tạo ra một bảng HTML từ danh sách các danh sách các chuỗi:
def html_table[lol]:
print ''
for sublist in lol:
print ' '
print ' '.join[sublist]
print ' '
print '
'
Nếu bạn muốn lấy nó dưới dạng một chuỗi thay vì in nó ra, hãy thay đổi từng print
thành yield
và sử dụng ____10.
Bây giờ bạn có hai khối xây dựng đơn giản, hữu ích, có thể sử dụng và có thể tái sử dụng-việc tách chúng sẽ có ích bất cứ khi nào bạn muốn trình bày dữ liệu của mình như một bảng HTML, và cả bất cứ khi nào danh sách danh sách Bảng đến từ bất kỳ cách nào khác để xây dựng nó. Việc đặt chúng lại với nhau rất dễ thực hiện trong mã ứng dụng của bạn, nhưng tất nhiên cũng dễ dàng thực hiện một "thói quen keo" đơn giản, ví dụ, giả sử phiên bản ____ 9 của ____ của
def col_major[alist, sublen]:
numrows = [len[alist]+sublen-1] // sublen
return [alist[i::sublen] for i in range[numrows]]
2 và một kết quả chuỗi duy nhất là mong muốn:def list_to_html_table[alist, sublength, column_major=False]:
if column_major:
lol = col_major[alist, sublength]
else:
lol = row_major[alist, sublength]
return ''.join[html_table[lol]]
Đây không phải là cách tiếp cận khối xây dựng này thực sự đẹp hơn và dễ chịu hơn, cũng như năng suất hơn, so với lập trình về các đốm màu lớn của keo dán ...?-]
Debian-Archive-Keyring
#!/usr/bin/python3 # Run as: create-html-table.py {input-file-name} # The script requires 1 argument: the input file name. # It expects a comma-separated input file to parse into an html table, # and assumes that the column headers are located in the first row. import sys filein = open[sys.argv[1], "r"] fileout = open["html-table.html", "w"] data = filein.readlines[] table = "
{0} | \n".format[column.strip[]] table += "
Debianutils
Diffutils
No.,Package,Priority,Is a Dependency? 1,adduser,important,yes 2,apt,important,yes 3,apt-utils,important,no 4,base-files,required,yes 5,base-passwd,required,yes 6,bash,required,no 7,bsdmainutils,important,no 8,bsdutils,required,yes 9,coreutils,required,yes 10,cpio,important,yes 11,cron,important,yes 12,dash,required,yes 13,debconf,required,yes 14,debconf-i18n,important,no 15,debian-archive-keyring,important,yes 16,debianutils,required,yes 17,diffutils,required,no 18,dmidecode,important,no 19,dmsetup,optional,yes 20,dpkg,required,yes
DMIDECODE
Tệp đầu ra sẽ được tạo trong thư mục Bash/PowerShell hiện tại và sẽ được đặt tên là HT HTML-Table.html. Tệp sẽ chứa dữ liệu tệp đầu vào được định dạng thành cấu trúc bảng HTML. Ví dụ,
1 | adduser | important | yes |
2 | apt | important | yes |
3 | apt-utils | important | no |
4 | base-files | required | yes |
5 | base-passwd | required | yes |
6 | bash | required | no |
7 | bsdmainutils | important | no |
8 | bsdutils | required | yes |
9 | coreutils | required | yes |
10 | cpio | important | yes |
11 | cron | important | yes |
12 | dash | required | yes |
13 | debconf | required | yes |
14 | debconf-i18n | important | no |
15 | debian-archive-keyring | important | yes |
16 | debianutils | required | yes |
17 | diffutils | required | no |
18 | dmidecode | important | no |
19 | dmsetup | optional | yes |
20 | dpkg | required | yes |
Tệp đầu ra được hiển thị trong trang web CSS CSS
Dưới đây là bảng đầu ra Bảng HTML được hiển thị với định dạng CSS được sử dụng bởi trang web này.
1 | thêm người dùng | quan trọng | Vâng |
2 | đúng cách | quan trọng | Vâng |
3 | đúng cách | quan trọng | Vâng |
4 | đúng cách | apt-utils | Vâng |
5 | đúng cách | apt-utils | Vâng |
6 | đúng cách | apt-utils | Vâng |
7 | đúng cách | quan trọng | Vâng |
8 | đúng cách | apt-utils | Vâng |
9 | đúng cách | apt-utils | Vâng |
10 | đúng cách | quan trọng | Vâng |
11 | đúng cách | quan trọng | Vâng |
12 | đúng cách | apt-utils | Vâng |
13 | đúng cách | apt-utils | Vâng |
14 | đúng cách | quan trọng | Vâng |
15 | đúng cách | quan trọng | Vâng |
16 | đúng cách | apt-utils | Vâng |
17 | đúng cách | apt-utils | Vâng |
18 | đúng cách | quan trọng | Vâng |
19 | đúng cách | apt-utils | Vâng |
20 | đúng cách | apt-utils | Vâng |