/ / Python napisz / utwórz plik CSV z ustalonymi kolumnami [duplicate] - python, csv

Python napisz / utwórz plik CSV z ustalonymi kolumnami [duplicate] - python, csv

Mam kolumny danych, w których kolumna danychzakresy szeroko szerokości. Chciałbym wyświetlać te dane czcionką o stałej szerokości, aby ułatwić przeglądanie, a jednocześnie zachować możliwości analizowania danych za pomocą popularnych programów obsługi CSV.

Jestem skłonny zaakceptować, że operacje paskowania mogą wymagać operacji strip / trim i nie martwię się, że zachowywana jest wiodąca / kończąca się biała przestrzeń.

Jak mogę napisać csv z kolumnami o stałej szerokości? Czy to możliwe z csv moduł?

W terminach Open / Libre Office jest to nazywane "Stała szerokość kolumny" w opcjach eksportu pliku tekstowego.

Przykład

data = [
("Brown Fox Jumps Over", "Lorem ipsum",),
("The Lazy", "dolor sit amet,",),
("Dog", "consectetur adipiscing elit.",),
]

Pożądane wyjście

"Header 1            ", "Header 2                    ",
"Brown Fox Jumps Over", "Lorem ipsum                 ",
"The Lazy            ", "dolor sit amet,             ",
"Dog                 ", "consectetur adipiscing elit.",

Głównie szukam narzędzia do skanowania zbioru danych pod kątem jego najszerszych wartości i formatu, a następnie całą kolumnę do tej szerokości dla wszystkich kolumn, ponieważ pisać samemu inline wydaje się nieodpowiednie.

Odpowiedzi:

3 dla odpowiedzi № 1

Posługiwać się str.format?

In [1]: "{0: <10}".format("lorem")
Out[1]: "lorem     "

In [2]: "{0: <10}".format("lorem ipsum")
Out[2]: "lorem ipsum"

Coś jak,

lines = ["lorem ipsum", "dolor sit amet"]

with open("foo.txt", "w") as foo:
for line in lines:
words = line.split()
formatted = " ".join(["{0: <5}".format(word) for word in words])
foo.write(formatted + "n")

$ cat foo.txt
lorem ipsum
dolor sit   amet

Możesz wtedy użyć pandas przeczytać to dość elegancko

In [1]: df = pd.read_fwf("foo.txt", colspecs=[(0,5),(6,11),(12,17)], header=None)

In [2]: df
Out[2]:
0      1     2
0  lorem  ipsum   NaN
1  dolor    sit  amet