Python lập bảng thụt lề

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

import cStringIO,operator

def indent[rows, hasHeader=False, headerChar='-', delim=' | ', justify='left',
           separateRows=False, prefix='', postfix='', wrapfunc=lambda x:x]:
    """Indents a table by column.
       - rows: A sequence of sequences of items, one sequence per row.
       - hasHeader: True if the first row consists of the columns' names.
       - headerChar: Character to be used for the row separator line
         [if hasHeader==True or separateRows==True].
       - delim: The column delimiter.
       - justify: Determines how are data justified in their column. 
         Valid values are 'left','right' and 'center'.
       - separateRows: True if rows are to be separated by a line
         of 'headerChar's.
       - prefix: A string prepended to each printed row.
       - postfix: A string appended to each printed row.
       - wrapfunc: A function f[text] for wrapping text; each element in
         the table is first wrapped by this function."""
    # closure for breaking logical rows to physical, using wrapfunc
    def rowWrapper[row]:
        newRows = [wrapfunc[item].split['\n'] for item in row]
        return [[substr or '' for substr in item] for item in map[None,*newRows]]
    # break each logical row into one or more physical ones
    logicalRows = [rowWrapper[row] for row in rows]
    # columns of physical rows
    columns = map[None,*reduce[operator.add,logicalRows]]
    # get the maximum of each column by the string length of its items
    maxWidths = [max[[len[str[item]] for item in column]] for column in columns]
    rowSeparator = headerChar * [len[prefix] + len[postfix] + sum[maxWidths] + \
                                 len[delim]*[len[maxWidths]-1]]
    # select the appropriate justify method
    justify = {'center':str.center, 'right':str.rjust, 'left':str.ljust}[justify.lower[]]
    output=cStringIO.StringIO[]
    if separateRows: print >> output, rowSeparator
    for physicalRows in logicalRows:
        for row in physicalRows:
            print >> output, \
                prefix \
                + delim.join[[justify[str[item],width] for [item,width] in zip[row,maxWidths]]] \
                + postfix
        if separateRows or hasHeader: print >> output, rowSeparator; hasHeader=False
    return output.getvalue[]

# written by Mike Brown
# //aspn.activestate.com/ASPN/Cookbook/Python/Recipe/148061
def wrap_onspace[text, width]:
    """
    A word-wrap function that preserves existing line breaks
    and most spaces in the text. Expects that existing line
    breaks are posix newlines [\n].
    """
    return reduce[lambda line, word, width=width: '%s%s%s' %
                  [line,
                   ' \n'[[len[line[line.rfind['\n']+1:]]
                         + len[word.split['\n',1][0]
                              ] >= width]],
                   word],
                  text.split[' ']
                 ]

import re
def wrap_onspace_strict[text, width]:
    """Similar to wrap_onspace, but enforces the width constraint:
       words longer than width are split."""
    wordRegex = re.compile[r'\S{'+str[width]+r',}']
    return wrap_onspace[wordRegex.sub[lambda m: wrap_always[m.group[],width],text],width]

import math
def wrap_always[text, width]:
    """A simple word-wrap function that wraps text on exactly width characters.
       It doesn't split the text in words."""
    return '\n'.join[[ text[width*i:width*[i+1]] \
                       for i in xrange[int[math.ceil[1.*len[text]/width]]] ]]
    
if __name__ == '__main__':
    labels = ['First Name', 'Last Name', 'Age', 'Position']
    data = \
    '''John,Smith,24,Software Engineer
       Mary,Brohowski,23,Sales Manager
       Aristidis,Papageorgopoulos,28,Senior Reseacher'''
    rows = [row.strip[].split[',']  for row in data.splitlines[]]

    print 'Without wrapping function\n'
    print indent[[labels]+rows, hasHeader=True]
    # test indent with different wrapping functions
    width = 10
    for wrapper in [wrap_always,wrap_onspace,wrap_onspace_strict]:
        print 'Wrapping function: %s[x,width=%d]\n' % [wrapper.__name__,width]
        print indent[[labels]+rows, hasHeader=True, separateRows=True,
                     prefix='| ', postfix=' |',
                     wrapfunc=lambda x: wrapper[x,width]]
    
    # output:
    #
    #Without wrapping function
    #
    #First Name | Last Name        | Age | Position         
    #-------------------------------------------------------
    #John       | Smith            | 24  | Software Engineer
    #Mary       | Brohowski        | 23  | Sales Manager    
    #Aristidis  | Papageorgopoulos | 28  | Senior Reseacher 
    #
    #Wrapping function: wrap_always[x,width=10]
    #
    #----------------------------------------------
    #| First Name | Last Name  | Age | Position   |
    #----------------------------------------------
    #| John       | Smith      | 24  | Software E |
    #|            |            |     | ngineer    |
    #----------------------------------------------
    #| Mary       | Brohowski  | 23  | Sales Mana |
    #|            |            |     | ger        |
    #----------------------------------------------
    #| Aristidis  | Papageorgo | 28  | Senior Res |
    #|            | poulos     |     | eacher     |
    #----------------------------------------------
    #
    #Wrapping function: wrap_onspace[x,width=10]
    #
    #---------------------------------------------------
    #| First Name | Last Name        | Age | Position  |
    #---------------------------------------------------
    #| John       | Smith            | 24  | Software  |
    #|            |                  |     | Engineer  |
    #---------------------------------------------------
    #| Mary       | Brohowski        | 23  | Sales     |
    #|            |                  |     | Manager   |
    #---------------------------------------------------
    #| Aristidis  | Papageorgopoulos | 28  | Senior    |
    #|            |                  |     | Reseacher |
    #---------------------------------------------------
    #
    #Wrapping function: wrap_onspace_strict[x,width=10]
    #
    #---------------------------------------------
    #| First Name | Last Name  | Age | Position  |
    #---------------------------------------------
    #| John       | Smith      | 24  | Software  |
    #|            |            |     | Engineer  |
    #---------------------------------------------
    #| Mary       | Brohowski  | 23  | Sales     |
    #|            |            |     | Manager   |
    #---------------------------------------------
    #| Aristidis  | Papageorgo | 28  | Senior    |
    #|            | poulos     |     | Reseacher |
    #---------------------------------------------

Làm cách nào để thụt lề Python?

Khoảng trắng được sử dụng để thụt lề trong Python . Tất cả các câu lệnh có cùng khoảng cách về bên phải đều thuộc về cùng một khối mã. Nếu một khối phải được lồng sâu hơn, thì nó chỉ cần được thụt vào xa hơn về bên phải.

Lập bảng hoạt động như thế nào trong Python?

lập bảng thông minh về căn chỉnh cột. Tính năng này phát hiện các cột chỉ chứa số và căn chỉnh chúng theo dấu thập phân [hoặc chuyển chúng sang bên phải nếu chúng có vẻ là số nguyên] . Các cột văn bản được tuôn ra bên trái. Bạn có thể ghi đè căn chỉnh mặc định bằng các đối số có tên là numalign và stralign.

Lập bảng có được bao gồm trong Python không?

Python cung cấp khả năng dễ dàng biến một số loại dữ liệu dạng bảng nhất định thành bảng văn bản thuần túy được định dạng đẹp mắt và đó là nhờ chức năng lập bảng .

Điều gì được sử dụng khi dữ liệu ở định dạng bảng trong Python?

Sử dụng thư viện Pandas để thống kê dữ liệu dạng bảng. Pandas là một thư viện Python được sử dụng rộng rãi để thống kê, đặc biệt là trên dữ liệu dạng bảng.

Chủ Đề