可以从CSV文件创建HTML页面,其中包含以下内容:
import pandas as pd
df = pd.read_csv('../data.csv',delimiter=';', engine='python')
df.to_html('csv.html')
此表的列宽似乎与标题(列标题)大小相关,但对于某些列,内容大于列标题并被包装到下一行。对于多字单元格(aaaaaaaaa aaaaaaaaa
),使用以下CSV会发生这种情况:
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 :(得分: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())