gpt4 book ai didi

python - 将 CSV 转换为 txt 并使用 Python 每 10 个值开始新行

转载 作者:行者123 更新时间:2023-11-28 19:25:17 26 4
gpt4 key购买 nike

我有一个 csv 文件,其中包含 324 行和 495 列的值数组。每行和每列的所有值都相同。

我需要拆分此数组,以便每 10 个值放入一个新行。因此,对于 324 行中的每一行,将有 49 个具有 10 个值的完整列和 1 个具有 5 个值的列(495 col/10 个值 = 49 个具有 10 个值的新行和 1 个具有 5 个值的新行)。然后转到下一行,依此类推 324 行。

我遇到的问题如下:

  1. line.split(",") 似乎什么都没做
  2. line.split 之后的所有内容似乎也没有做任何事情
  3. 我不确定我的 for newrow in range... 是否正确
  4. 我还没有将写入输出写入文本文件,我认为它应该是 outFile.write(这里有些东西,不确定是什么)
  5. 我在打印语句后加了“\n”,但它只是打印出来了

我是一名初级程序员。

脚本:

import string
import sys

# open csv file...in read mode
inFile= open("CSVFile", 'r')
outFile= open("TextFile.txt", 'w')


for line in inFile:
elmCellSize = line.split(",")
for newrow in range(0, len(elmCellSize)):
if (newrow/10) == int(newrow/10):
print elmCellSize[0:10]

outFile.close()
inFile.close()

最佳答案

你真的应该使用 csv 模块,但无论如何我可以提供一些建议。

您遇到的一个问题是,当您说 print elmCellSize[0:10] 时,您总是获取前 10 个元素,而不是最近的 10 个元素。根据您想要执行此操作的方式,您可以保留一个字符串来记住最近的 10 个元素。在提到一些您可以使用代码修复的问题之后,我将在下面展示一个示例。

首先请注意 line.split(',') 返回一个列表。所以您选择的变量名 elmCellSize 有点误导。如果你说 lineList = line.split(',') 可能更有意义?或者如果你说 lineSize = len(line.split(',')) 并使用它?

此外(虽然我对 Python 2.x 一无所知)我认为 xrange 是 Python 2.x 的一个函数,它比 range 更高效,尽管它的工作方式完全相同。

除了说if (newrow/10) == int(newrow/10),你实际上可以说if index % 10 == 0,来检查是否index 是 10 的倍数。% 可以被认为是“余数”,因此它会得到 newrow 除以 10 的余数. (例如:5% 10 = 5;17% 10 = 7;30% 10 = 0)

现在不是打印 [0:10],它总是打印前 10 个元素,而是从当前索引向后打印 10 个空格。所以你可以说 print lineList[index-10:index] 来打印最近的 10 个元素。

最后你会得到类似的东西

...
lineList = line.split(',') # Really, you should use csv reader
# Open the file to write to
with open('yourfile.ext', 'w') as f:
# iterate through the line
for index, value in enumerate(lineList):
if index % 10 == 0 and index != 0:
# Write the last 10 values to the file, separated by commas
f.write(','.join(lineList[index-10:index]))
# new line
f.write('\n')
# print
print lineList[index-10:index]

我当然不是专家,但我希望这对您有所帮助!

关于python - 将 CSV 转换为 txt 并使用 Python 每 10 个值开始新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com