首页 > 解决方案 > 如何在列表列表中添加换行符?

问题描述

我正在尝试在 python 中编写一个函数,该函数读取 csv 文件并返回格式良好的文件。输入文件只是标准的 csv 文件。每条线代表一个人。输出格式应如下所示:

[
    ("Age", "Gender", "Weight (kg)", "Height (cm)"),
    ("28", "Female", "58", "168"),
    ("33", "Male", "", "188")
]

问题是我不知道我该怎么做。我知道我可以遍历列表列表中的每个元素并打印它,但我想像上面一样返回它们。我设法最终得到的唯一格式如下:

[('Age', 'Gender', 'Weight (kg)', 'Height (cm)'), ('28', 'Female', '58', '168'), ('33', 'Male', '', '188')]

万一有人需要查看我的代码(我想它的代码根本就不是很好,但我正在学习):

def read_csv(path):
    newlist = []
    with open("example.csv", "r") as f:
        nr_of_lines = 0
        for line in f.readlines():
            counter = 0
            nr_of_lines += 1
            while "," in line:   
                idx = line.find(",")
                entry = line[0:idx]
                newlist.append(entry)
                line = line[idx+1:]
                counter += 1
                if "," not in line: 
                    idx2 = line.find("\n")
                    newlist.append(line[:idx2])

    nr_elements_per_line = int(len(newlist)/nr_of_lines)
    tuple_list = []
    for i in range(nr_of_lines):
        tuple_list.append(tuple(newlist[nr_elements_per_line*i:nr_elements_per_line+i*nr_elements_per_line]))
        
    return tuple_list
print(read_csv("example.csv"))

标签: python

解决方案


您可以使用该pprint模块进行更好的打印,或者自己打印:

data = [('Age', 'Gender', 'Weight (kg)', 'Height (cm)'), 
        ('28', 'Female', '58', '168'), 
        ('33', 'Male', '', '188')]

print('[')
for inner in data:
    print(f"\t{inner}")
print(']')

输出:

[
    ('Age', 'Gender', 'Weight (kg)', 'Height (cm)')
    ('28', 'Female', '58', '168')
    ('33', 'Male', '', '188')
]

pprint

from pprint import pprint

pprint(data) 

输出:

[('Age', 'Gender', 'Weight (kg)', 'Height (cm)'),
 ('28', 'Female', '58', '168'),
 ('33', 'Male', '', '188')]

推荐阅读