I have a little question. How I can split the table if they have the same column name?
This is the example:
+----------------------------+
| AUDIO TRACKS |
+----+----------+------------+
| ID | LangCode | LangName |
+----+----------+------------+
| 1 | de | German |
| 2 | de | German |
| 3 | en | English |
| 4 | en | English |
| 5 | es | Spanish |
| 6 | es | Spanish |
+----------------------------+
This is my desired output
+----------------------------+
| AUDIO TRACKS |
+----+----------+------------+
| ID | LangCode | LangName |
+----+----------+------------+
| 1 | de | German |
| 2 | de | German |
|----------------------------|
| 3 | en | English |
| 4 | en | English |
|----------------------------|
| 5 | es | Spanish |
| 6 | es | Spanish |
+----------------------------+
You can do this with itertools.groupby
and after each group add split_row like below:
from prettytable import PrettyTable
from itertools import groupby
myTable = PrettyTable(["ID", "LongCode", "LangName"])
lst = [["1", "de", "German"], ["2", "de", "German"],
["3", "en", "English"], ["4", "en", "English"],
["5", "es", "Spanish"], ["4", "es", "Spanish"]]
split_row = ['—' * x for x in [2, 8, 10]]
myTable.title = 'AUDIO TRACKS'
for key, group in groupby(lst, lambda x: x[1]):
for g in group:
myTable.add_row(g)
myTable.add_row(split_row)
print(myTable)
Output:
+----------------------------+
| AUDIO TRACKS |
+----+----------+------------+
| ID | LongCode | LangName |
+----+----------+------------+
| 1 | de | German |
| 2 | de | German |
| —— | ———————— | —————————— |
| 3 | en | English |
| 4 | en | English |
| —— | ———————— | —————————— |
| 5 | es | Spanish |
| 4 | es | Spanish |
| —— | ———————— | —————————— |
+----+----------+------------+