2016-10-12 4 views
2

Можно создать HTML страницу из файла CSV, со следующими:Редактировать таблицу программно, чтобы соответствовать содержание

import pandas as pd 

df = pd.read_csv('../data.csv',delimiter=';', engine='python') 
df.to_html('csv.html') 

Ширина столбца этой таблицы, кажется, уважать заголовок (заголовок столбца) размер, но для некоторых столбцов содержимое больше, чем заголовок столбца, и будет завернуто в следующую строку. Это происходит в следующем формате CSV для нескольких слов ячеек (aaaaaaaaa aaaaaaaaa):

Name1;Name2;Name3;Name4;Name5 
1;aaaaaaaaa aaaaaaaaa;b;aaaaaaaaa aaaaaaaaa;aaaaaaaaa aaaaaaaaa 
2;aaaaaaaaa aaaaaaaaa;b;aaaaaaaaa aaaaaaaaa;aaaaaaaaa aaaaaaaaa 
3;aaaaaaaaa aaaaaaaaa;b;aaaaaaaaa aaaaaaaaa;aaaaaaaaa aaaaaaaaa 

Я хотел бы сделать ширину столбцов достаточно большими, чтобы вместить содержание (во избежание перенос слов). Как я могу получить там программно (используя Python)?

+0

Это кажется 'td { text-align: center; white-space: nowrap } 'is ti. – KcFnMi

ответ

1

Ответ основан на this.

import pandas as pd 

filename = 'csv.html' 

df = pd.read_csv('../data.csv',delimiter=';', engine='python') 

html_begin = '\ 
<meta charset="UTF-8">\n\ 
<html>\n\ 
<head><link rel="stylesheet" type="text/css" href="csv.css"></head>\n\ 
<body>\n\n' 

html_end = '\n\ 
</body>\n\ 
</html>\n' 

with open(filename, 'w') as f: 
    f.write(html_begin) 
    df.to_html(f) 
    f.write(html_end) 

И csv.css, как:

table { 
    border: .5px solid lightgray; 
    border-collapse: collapse; 
    width: 100%; 
} 
th { 
    border: .5px solid lightgray; 
    text-align: center; 
} 
td { 
    border: .5px solid lightgray; 
    text-align: center; 
    white-space:nowrap 
} 

В качестве альтернативы (лучшая альтернатива скажу), можно избежать необходимости CSS и сделать все, как с помощью Pandas Style:

import pandas as pd 

filename = 'csv_style.html' 

df = pd.read_csv('../data.csv',delimiter=';', engine='python') 

style = df.style 
style.set_properties(**{'text-align': 'center', 
         'white-space': 'nowrap'}) 

with open(filename, 'w') as f: 
    f.write(style.render()) 
+1

, вы можете проверить [Форматирование стиля Pandas] (http://pandas.pydata.org/pandas-docs/stable/style.html), чтобы сделать это способом Pandas. [Это] (http://stackoverflow.com/questions/36897366/pandas-to-html-using-the-style-options-or-custom-css) также может быть интересным ... – MaxU

+0

Pandas Style довольно круто ! Интересно, что это не помогает с вопросом об этом вопросе (или я не знаю, как использовать Pandas Style для решения этой конкретной проблемы). – KcFnMi

+0

Вопрос отредактирован, чтобы включить CSV, иллюстрирующий проблему (вам нужно уменьшить окно браузера, чтобы увидеть перенос слов). – KcFnMi

Смежные вопросы