如何从python输出创建表
我已经编写了一个python程序,其中我在目录中存储了各种文件。这些文件有n个字符 代码读取这些文件并打印如何从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],)...............
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文件导入数据。我已经更新了帖子