首页 > 解决方案 > 写入具有特定列数的文件

问题描述

我需要编写一个具有特定列数的文本文档(在这种情况下总是有 16 个)。我发现实现这一点的方法是:检查我想要的值所在的数组(列表)的 len,然后除以 16,得到足以精确等于 16 列的行数。当然,有一种更正确的方法来优化这个过程。我利用来问的另一个问题是(因为我真的不知道该怎么做):如何在 16 列中写入并始终留下与该数组的最大数量相等的缩进(即:8500 = 4 个字符= 4 个空格)。像这样的东西:

例子

这是我的代码:

f = open('Questions.txt','r')

my_list = [line.split(',')[0]  for line in f]

ff = open('Questions_new.txt','w')

i=0
x=len(my_list)

rows = int(round(len(my_list)//16))

for i in range(rows):
   row = my_list [i::rows]
   ff.write(' '.join(str(x) for x in row)+'\n')

使用 line.split 是因为我从文本文档(下面的示例)中提取文本文档的所有字符,直到找到逗号:

1213,4214 12312

13,1231 123

45,343

他只是为我保留信息:

1213

13

45

如果有人可以提供帮助,我将不胜感激。

标签: pythonarraysxcodewrite

解决方案


要回答您关于行数的第一个问题,我认为您的方法非常有效。构建此结构的另一种方法包括:

  • 有一个 while 循环,它在每次迭代中从文本文件中读取一个新值。在 while 循环内,为n_rowsand保留一个计数器n_cols
    • 将新值写入output[n_rows][n_cols]当前行右侧的输出中
    • 如果n_cols == 16, 递增n_row++

关于你的第二个问题,你可以:

  • 第一遍读取所有值,将它们存储到数组中
  • 将新值添加到数组时,将位数与当前最大位数进行比较
  • 将数组中的值复制到输出文本文件中,填充到最大位数

推荐阅读