[PYTHON] 파이썬 형식 표 출력 [duplicate]
PYTHON파이썬 형식 표 출력 [duplicate]
python2.7을 사용하여 테이블 형식의 데이터를 인쇄하려고합니다.
이 코드는 대략 다음과 같습니다.
for i in mylist:
print "{}\t|{}\t|".format (i, f(i))
문제는 i 또는 f (i)의 길이에 따라 데이터가 정렬되지 않는다는 것입니다.
이것이 내가 얻는 것입니다.
|foo |bar |
|foobo |foobar |
내가 얻고 싶은 것 :
|foo |bar |
|foobo |foobar |
이 작업을 수행 할 수있는 모듈이 있습니까?
해결법
-
==============================
1.자신 만의 서식 지정 기능을 사용하는 것은 그리 어렵지 않습니다.
자신 만의 서식 지정 기능을 사용하는 것은 그리 어렵지 않습니다.
def print_table(table): col_width = [max(len(x) for x in col) for col in zip(*table)] for line in table: print "| " + " | ".join("{:{}}".format(x, col_width[i]) for i, x in enumerate(line)) + " |" table = [(str(x), str(f(x))) for x in mylist] print_table(table)
-
==============================
2.pypi, PrettyTable에 대한 좋은 모듈이 있습니다.
pypi, PrettyTable에 대한 좋은 모듈이 있습니다.
http://code.google.com/p/prettytable/wiki/Tutorial
http://pypi.python.org/pypi/PrettyTable/
$ pip install PrettyTable
-
==============================
3.더 아름다운 테이블을 사용하려면 tabulate 모듈을 사용하십시오.
더 아름다운 테이블을 사용하려면 tabulate 모듈을 사용하십시오.
사이트 링크
여기에 한 가지 예가보고되었습니다.
>>> from tabulate import tabulate >>> table = [["Sun",696000,1989100000],["Earth",6371,5973.6], ... ["Moon",1737,73.5],["Mars",3390,641.85]] >>> print tabulate(table) ----- ------ ------------- Sun 696000 1.9891e+09 Earth 6371 5973.6 Moon 1737 73.5 Mars 3390 641.85 ----- ------ -------------
-
==============================
4.
mylist = {"foo":"bar", "foobo":"foobar"} width_col1 = max([len(x) for x in mylist.keys()]) width_col2 = max([len(x) for x in mylist.values()]) def f(ind): return mylist[ind] for i in mylist: print "|{0:<{col1}}|{1:<{col2}}|".format(i,f(i),col1=width_col1, col2=width_col2)
-
==============================
5.열의 왼쪽 정렬을 원했던 것처럼 보이지만 ljust 문자열 메서드에 대한 답변은 보지 못했습니다. 그래서 Python 2.7에서 그 방법을 보여 드리겠습니다.
열의 왼쪽 정렬을 원했던 것처럼 보이지만 ljust 문자열 메서드에 대한 답변은 보지 못했습니다. 그래서 Python 2.7에서 그 방법을 보여 드리겠습니다.
def bar(item): return item.replace('foo','bar') width = 20 mylist = ['foo1','foo200000','foo33','foo444'] for item in mylist: print "{}| {}".format(item.ljust(width),bar(item).ljust(width)) foo1 | bar1 foo200000 | bar200000 foo33 | bar33 foo444 | bar444
참조 용으로 help ( 'abc'.ljust)를 실행하면 다음과 같이 표시됩니다.
ljust 메서드가 지정한 너비를 가져 와서 문자열의 길이를 빼고 그 문자열의 오른쪽면을 그 많은 문자로 채 웁니다.
-
==============================
6.BeautifulTable을 사용해보십시오. 다음은 그 예입니다.
BeautifulTable을 사용해보십시오. 다음은 그 예입니다.
>>> from beautifultable import BeautifulTable >>> table = BeautifulTable() >>> table.column_headers = ["name", "rank", "gender"] >>> table.append_row(["Jacob", 1, "boy"]) >>> table.append_row(["Isabella", 1, "girl"]) >>> table.append_row(["Ethan", 2, "boy"]) >>> table.append_row(["Sophia", 2, "girl"]) >>> table.append_row(["Michael", 3, "boy"]) >>> print(table) +----------+------+--------+ | name | rank | gender | +----------+------+--------+ | Jacob | 1 | boy | +----------+------+--------+ | Isabella | 1 | girl | +----------+------+--------+ | Ethan | 2 | boy | +----------+------+--------+ | Sophia | 2 | girl | +----------+------+--------+ | Michael | 3 | boy | +----------+------+--------+
from https://stackoverflow.com/questions/8356501/python-format-tabular-output by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Windows에서 실행되는 PyQt 앱에서 콘솔 창을 숨기려면 어떻게해야합니까? (0) | 2018.10.05 |
---|---|
[PYTHON] 파이썬에서 백 슬래시 사용하기 (탈출하지 않기) (0) | 2018.10.05 |
[PYTHON] Python 다중 처리에서 Pool.map을 Array (공유 메모리)와 결합하는 방법은 무엇입니까? (0) | 2018.10.05 |
[PYTHON] IF의 등가물 다음에 ELSE (0) | 2018.10.05 |
[PYTHON] 파이썬에서 Tkinter를 가져올 때 ImportError [duplicate] (0) | 2018.10.05 |