Распечатать 5 букв или цифр, чтобы поместиться в ячейки - PullRequest
0 голосов
/ 02 июля 2018

Я бы сделал стол. Ячейки имеют фиксированный размер.

Как я могу вырезать буквы или цифры, чтобы они помещались в ячейках? Есть ли возможность (например, лимитная строка или int)?

Он должен запускаться автоматически и работать для всех видов сценариев. Это мой код.

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import pandas as pd
from pandas.plotting import table


def main():
    data_frame = pd.read_excel('C:/test/TestArrays.xlsx')

    with PdfPages('multipage.pdf') as pdf:
        columns_per_page = 10
        for page_no, start_column in enumerate(
        range(0, data_frame.shape[1], columns_per_page), 1
    ):
        sub_frame = data_frame.iloc[
            0:15, start_column:start_column + columns_per_page
        ]
        fig, ax = plt.subplots(figsize=(5, 1))
        fig.suptitle('1.Excel-Daten-Seite-{}'.format(page_no), fontsize=15)
        ax.xaxis.set_visible(False)
        ax.yaxis.set_visible(False)
        ax.set_frame_on(False)
        a_table = table(ax, sub_frame, colWidths=[0.2] * sub_frame.shape[1])
        a_table.auto_set_font_size(False)
        a_table.set_fontsize(15)
        a_table.scale(1.5, 1.5)
        cells = a_table.get_celld()
        for cell in (cells[0, i] for i in range(sub_frame.shape[1])):
            cell.set_fontsize(13)
            cell.set_color('grey')
        pdf.savefig(fig, bbox_inches='tight', dpi=300)


if __name__ == '__main__':
   main()

image

1 Ответ

0 голосов
/ 02 августа 2018

Я не знаком с Excel или с модулями, которые вы используете. Но, насколько я понимаю. Вы хотите обрезать текст, если он превышает определенное количество букв. Для этого вы можете использовать list[:n]. По сути, это возвращает n количество элементов из списка. Но у вас есть строка, так что ...

maxlen = 5                         #the maximum number of characters you want the string to have
def trunc(text):
    global maxlen
    thelist = [i for i in text]    #converts the text string into a list
    trunclist = thelist[:maxlen]   #truncates the list
    trunctext = ''.join(trunclist) #converts it back into a string
    return trunctext               #returns truncated text

Итак, где бы вы ни хотели отобразить текст foo, просто используйте trunc(foo)

(Кстати, просто убедитесь, что ввод является строкой)

EDIT: Я только что увидел, что команду усечения можно использовать и в строках, так что ...

 maxlen = 5                         #the maximum number of characters you want the string to have
 def trunc(text):
     return text[:maxlen]               #returns truncated text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...