如何从python输出创建表

如何从python输出创建表,python,Python,我已经编写了一个python程序,其中我在目录中存储了各种文件。这些文件有n个字符 代码读取这些文件并打印 文件名 文件长度 文件中某些字符的文本模式 我得到了以下输出: 36.HomoSapiensHOXD10gene.fa ....... this is the file name 11753.................length of the file for characters ([2296, 2304, 5794, 10258, 11272],)...............

我已经编写了一个python程序,其中我在目录中存储了各种文件。这些文件有n个字符

代码读取这些文件并打印

  • 文件名
  • 文件长度
  • 文件中某些字符的文本模式
  • 我得到了以下输出:

    36.HomoSapiensHOXD10gene.fa ....... this is the file name
    11753.................length of the file for characters
    ([2296, 2304, 5794, 10258, 11272],)................patterns of text 
    
    37.HomoSapiensHOXD11gene.fa
    6139
    ([],)
    
    38.HomoSapiensHOXD13gene.fa
    3648
    ([403, 2718],)
    
    我想以表格形式显示上述输出,如下所示


    请帮助

    假设您的O/p如下所示:

    36.HomoSapiensHOXD10gene.fa 11753 ([2296, 2304, 5794, 10258, 11272],)
    37.HomoSapiensHOXD11gene.fa 6139 ([],)
    38.HomoSapiensHOXD13gene.fa 3648 ([403, 2718],)
    
    首先在终端上运行你的程序

    python yourfile.py > yourfile.txt
    
    这将把输出复制到yourfile.txt 然后使用以下python代码将其转换为整洁的表格格式:

    import pandas as pd
    file_data = open('yourfile.txt', 'r').read().splitlines()  # Read your file
    data = pd.DataFrame(columns=['file', 'length', 'pattern'])
    file = []  # filennames
    le = []  #length of file
    pattern = []  # patterns
    for f in file_data:
        s = f.split(" ", 2) #Two times split on space to get a list of all three parameters
        file_name = s[0].split('.', 1)[1] #extracting just the file name ignoring numbers
        length = s[1]
        patt = s[2].replace('(', '').replace('[', '').replace(']', '').replace(')', '')  # Removing useless brackets
        try:
            pattern.append(patt.rsplit(',', 1)[0])  # Removing the comma at the end
        except:
            pattern.append('no pattern')
        file.append(file_name)
        le.append(length)
    data['file'] = file
    data['length'] = le
    data['pattern'] = pattern
    print(data)
    
    现在,如果这是您想要的,您将获得所需的输出。您还可以使用pandas将其保存为excel/csv格式

                           file length                         pattern
    0  HomoSapiensHOXD10gene.fa  11753  2296, 2304, 5794, 10258, 11272
    1  HomoSapiensHOXD11gene.fa   6139                                
    2  HomoSapiensHOXD13gene.fa   3648                       403, 2718
    

    请把这个和prettytable一起试试

    from prettytable import PrettyTable
    
    x = PrettyTable()
    x.field_names = ["Field Name", "Length", "Pattern"]
    x.add_row(["HOXD10gene.fa", 11753, [2296, 2304, 5794, 10258, 11272]])
    print(x)
    
    您可以尝试从csv文件导入数据,如下所示

    from prettytable import from_csv
    with open("data.csv", "r") as fp: 
    x = from_csv(fp)
    print(x)
    

    你好,到目前为止你试过什么?你能给我看一些代码并告诉我你在哪里卡住了吗?我没有卡住,但是我想不出一种方法来将上面的输出转换成表格格式。你需要用文本字符在控制台中显示它吗?您是否考虑过用表生成HTML文件?谢谢代码。但在执行相同的操作后,我得到一个错误消息文件名行位置回溯2 FileNotFoundError:[Errno 2]没有这样的文件或目录:“hoxgenewithpromotors.txt”。我需要将此文件放置在何处,我的意思是python安装在该目录的何处。我现在可以在将文件放置在写入目录后获取该文件,但获取未找到索引错误文件_name=s[0]。拆分(“,”,1)[1]#仅提取文件名忽略数字这意味着您可能有任何空行,或在其上拆分的不带空格的行。我建议您删除空行或使用try-except语句。谢谢,我尝试了它,但长度为空。可能您的控制台收缩了输出,因为我首先在我的系统上测试了上面的代码。如果您还没有找到解决方案,请检查提供的格式是否正确,或者发布输出。我无法导入PrettyTables。或者从pip安装了相同的PrettyTables,它工作得很好,谢谢tonI。我有一个问题。我已经将输出复制到文本文件中,然后在代码中分别添加了行。我多次添加了x.add_行。如何通过直接从文本文件中读取这些行来循环这些行。请建议您最好从csv文件导入数据。我已经更新了帖子