繁体   English   中英

如何将我写入 python 中文本文件的文本居中?

[英]How do I center text that I write into a text file in python?

我已经寻找答案,但我不确定这是否可能。 我写了一个 function,它为一个文本文件创建了一个 header:

def file_Header():
    ''' Create the text file header '''
    sentence = ("Test text for the upcoming project")
    sentence2 = ("This machine is curretnly online")
    width = 35

    with open('test.txt', 'w') as file:
        file.write('##' + '#' * width + '##\n')
        file.write('#' + ' ' * (width+1) + ' #\n')

        for line in wrap(sentence, width):
            file.write('# {0:^{1}} #\n'.format(line, width))

        for line in wrap(sentence2, width):
            file.write('# {0:^{1}} #\n'.format(line, width))

        file.write('#' + ' ' * (width+1) + ' #\n')
        file.write('##' + '#'*(width) + '##\n')

这个文本格式化解决方案是在另一个 stackoverflow 页面上找到的,它运行良好。 但是,我想知道我是否可以在文本文件中将 output 居中?

提前致谢:)

从技术上讲,文本文件没有中间部分,因为没有默认的最大行长度。 它将存储任意数量的字符,而无需为您插入换行符。 但是,如果您要创建一些任意数字来表示最大行长度,那么这绝对是可能的。 您需要做的就是取 output 中最长的一行,从最大行长度中减去该行并将该数字减半,然后您将获得需要在 output 行中的每行之前插入的填充量。

例如:

from textwrap import wrap

def file_Header(max_len = 80):
    ''' Create the text file header '''
    sentence = ("Test text for the upcoming project")
    sentence2 = ("This machine is curretnly online")
    width = 35
    padding = " " * (max_len - (width + 4))//2
    with open('test.txt', 'w') as file:
        file.write(padding + '##' + '#' * width + '##\n')
        file.write(padding + '#' + ' ' * (width+1) + ' #\n')

        for line in wrap(sentence, width):
            file.write(padding + '# {0:^{1}} #\n'.format(line, width))

        for line in wrap(sentence2, width):
            file.write(padding + ('# {0:^{1}} #\n'.format(line, width)))

        file.write(padding + '#' + ' ' * (width+1) + ' #\n')
        file.write(padding + '##' + '#'*(width) + '##\n')

Output:

                     ######################################
                     ##                                  ##
                     ##                                  ##
                     ##Test text for the upcoming project##
                     ## This machine is curretnly online ##
                     ##                                  ##
                     ##                                  ##
                     ######################################

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM