使用 python 将 csv 文件转换为 txt 文件时,不同行之间的不同级别的间距

Different level of spacing between rows on different lines while converting a csv file to txt file using python

我必须将 .csv 文件转换为 .txt 文件,我已经这样做了,我有以下代码。

text_list = []

csv_file = 'test.csv'
with open(csv_file,"r") as infile:
    for line in infile:
        line = line.split(",", 2)
        text_list.append("\t".join(line))

txt_file = 'test.txt'
with open(txt_file, 'w') as outfile:
    for line in text_list:
        outfile.write(" " + line)
    outfile.close

但问题是,

CSV 文件:

phi,Z,T
0,0,0
10.000005,1.2,3000.00
20.000005,2.4,6000.00

需要的 txt 文件:

phi        Z    T
0          0    0
10.000005  1.2  3000.00
20.000005  2.4  6000.00

我有上面提到的代码的文本文件:

phi    Z    T
0    0    0
10.000005    1.2    3000.00
20.000005    2.4    6000.00

谢谢

您可以使用字符串方法ljust为您的字符串添加空格,使其具有一定的长度。因此,您逐行读取输入文件,用逗号分隔每一行并将其附加到 text_list,这将生成一个列表列表,其中每行的每个单词。

然后我们根据第一行的长度计算列数num_cols。然后我们使用嵌套列表推导计算每列中最长单词/数字的长度。我们根据相应列的最大长度使用它 ljust 每个单词。

text_list = []

csv_file = 'test.csv'
with open(csv_file,"r") as infile:
    for line in infile:
        line = line.rstrip().split(",", 2)
        text_list.append(line)

num_cols = len(text_list[0])
max_lengths = [max([len(line[i]) for line in text_list]) for i in range(num_cols)]

txt_file = 'test.txt'
with open(txt_file, 'w') as outfile:
    for line in text_list:
        outfile.write('\t'.join([word.ljust(max_lengths[i]) for i, word in enumerate(line)]) + '\n')