python从非数字数据列表创建表

2024-09-27 00:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来创建一个简单的表,给定一组3个文本数据列表,以及一个标题列表。下面是详细情况:我需要3列和不确定的行数,具体取决于数据源。如果有办法在Python中正常地进行导入的话,我也不希望导入任何东西。或者,我可以使用pandas、matplotlib或它们的组合。这是我的密码:

headers=["SCHEME","SERVER","PATH"]
schemes=[]
servers=[]
paths=[]
colLabels=['PATH','SERVER','SCHEME']
rowLabels=[]
def homework2(filename):
    """Opens a file, extracts URLs, parses them, and places them into table"""
    filedata=open(filename,"r")
    for url in filedata:
        lineurl=SimpleURL(url)
        schemes.append(lineurl.scheme())
        servers.append(lineurl.server())
        paths.append(lineurl.path())

这段代码读取给定的文本文件,获取每一行,并将URL解析为scheme、server和path。三个列表(和标题)如下所示:

['SCHEME', 'SERVER', 'PATH']
['http', 'https', 'https']
['google.com', 'twitter.com', 'github.com']
['/', '/pretend/me', '/asdflkjas/stuff']

我想创建这个输出,或者类似的东西

SCHEME        SERVER         PATH
http          https          https
google.com    twitter.com    github.com
/             /pretend/me    /asdflkjas/stuff

我试过使用DataFrame和table()函数,但没能成功。你知道吗


Tags: pathhttpscom标题列表servertablefilename
2条回答

代码:

import pandas

headers = ['SCHEME', 'SERVER', 'PATH']
scheme = ['http', 'https', 'https']
server = ['google.com', 'twitter.com', 'github.com']
path = ['/', '/pretend/me', '/asdflkjas/stuff']

data = {}

for i, header in enumerate(headers):
    data.update({header: [scheme[i], server[i], path[i]]})

df = pandas.DataFrame(data=data, columns=headers)
print(df)

输出:

       SCHEME       SERVER              PATH
0        http        https             https
1  google.com  twitter.com        github.com
2           /  /pretend/me  /asdflkjas/stuff

有了pandas'DataFrame我们可以很容易地做到这一点。你知道吗

只需将头和数据连接到一个字典中,头是键,schemeserverpath的列表是值。你知道吗

然后只需插入到pandas'DataFrame!你知道吗

注意:

如果您想在更少的代码行中获得相同的输出,可以重写将列表串联到字典中的行,作为不太清晰但功能相同的字典理解,如下所示:

data = {header: [scheme[i], server[i], path[i]] for i, header in enumerate(headers)}

试试这个代码。column_width是每列中元素的最大长度。你知道吗

headers = ["SCHEME","SERVER","PATH"]
schemes = ['http', 'https', 'https']
servers = ['google.com', 'twitter.com', 'github.com']
paths = ['/', '/pretend/me', '/asdflkjas/stuff']

def show_URL(headers, schemes, servers, paths):
    column_width = [max(len(x) for x in row) for row in zip(headers, schemes, servers, paths)]
    for item in [headers, schemes, servers, paths]:
        str_printing = ""
        for index, val in enumerate(item):
            str_printing += "{:{}}".format(val, column_width[index] + 5 )
        print (str_printing)

show_URL(headers, schemes, servers, paths)

输出:

SCHEME         SERVER          PATH                 
http           https           https                
google.com     twitter.com     github.com           
/              /pretend/me     /asdflkjas/stuff

相关问题 更多 >

    热门问题