Python - 将逗号附加到 csv 文件中的一行
Python - appending comma character to a row in csv file
这可能是微不足道的,但我尝试了很多但没有奏效。
我有以下代码:
if a == 0 and b == c-1:
row.append(str(arrayElement[k])+"],")
.csv
文件中的所需输出应类似于以下内容:
[1,1,2],
即:我希望行中的最后一列包含字符串 2],
然而,我得到的是:
[1,1,"2],"
如何得到我想要的格式的输出?
编辑:我正在读取二进制文件,最终输出应该是这样的:
[[1,1,2],
[2,3,4],
[5,6,7]]
我成功写入了 [[
、[
和 ]]
,所以第一行的第一个单元格包含:[[1
,
第二行的第一个单元格:[2
,第二行的最后一个单元格 4],
等
完整代码如下:
k = 0
row = []
for M in range (X):
for N in range(Y):
if N != Y:
k = k + 1
if M == 0 and N == 0:
row.append("[["+str(arrayElement[k-1]))
elif M == 0 and N == Y -1:
row.append(str(arrayElement[k-1])+"],")
elif M == X -1 and N == Y -1:
row.append(str(arrayElement[k-1])+"]]")
elif M > 0 and N == Y -1:
row.append(str(arrayElement[k-1])+"],")
elif M > 0 and N == 0:
row.append("["+str(arrayElement[k-1]))
else:
row.append(str(arrayElement[k-1]))
WeightsWriter.writerow(row)
row = []
尝试在将行添加到 CSV 文件时添加逗号,而不是将逗号添加到数组本身。示例:
row = [1,2,3]
csv.write(str(row)+",") # Writes [1, 2, 3], to CSV file
如果您有许多不同的行并且想用逗号连接它们,您可以使用 ",".join(rows)
用逗号连接行。示例:
rows = []
rowa = [1,2,3]
rows.append(rowa)
rowb = [4,5,6]
rows.append(rowb)
",".join([str(_) for _ in rows]) # Outputs [1, 2, 3],[4, 5, 6]
希望对您有所帮助!
出现引号是因为 CSV 代表 逗号 分隔值。如果它必须包含文字逗号,则需要将其引用。
你做的好像不是"add a comma at the end of a row";您在这里混合了抽象级别。行尾的逗号表示该行中的最后一个值为空。您尝试强制 CSV 生成代码执行一些文本文件级别的操作。
在正确的抽象级别操作意味着向您尝试保存的列表添加一个空字符串:
import csv
import sys # for the sake of example
writer = csv.writer(sys.stdout)
writer.writerow([1, 2, 3]) # writes 1,2,3
writer.writerow([1, 2, 3, '']) # writes 1,2,3,
现在空值前有一个逗号,恰好在行尾。
这可能是微不足道的,但我尝试了很多但没有奏效。
我有以下代码:
if a == 0 and b == c-1:
row.append(str(arrayElement[k])+"],")
.csv
文件中的所需输出应类似于以下内容:
[1,1,2],
即:我希望行中的最后一列包含字符串 2],
然而,我得到的是:
[1,1,"2],"
如何得到我想要的格式的输出?
编辑:我正在读取二进制文件,最终输出应该是这样的:
[[1,1,2],
[2,3,4],
[5,6,7]]
我成功写入了 [[
、[
和 ]]
,所以第一行的第一个单元格包含:[[1
,
第二行的第一个单元格:[2
,第二行的最后一个单元格 4],
等
完整代码如下:
k = 0
row = []
for M in range (X):
for N in range(Y):
if N != Y:
k = k + 1
if M == 0 and N == 0:
row.append("[["+str(arrayElement[k-1]))
elif M == 0 and N == Y -1:
row.append(str(arrayElement[k-1])+"],")
elif M == X -1 and N == Y -1:
row.append(str(arrayElement[k-1])+"]]")
elif M > 0 and N == Y -1:
row.append(str(arrayElement[k-1])+"],")
elif M > 0 and N == 0:
row.append("["+str(arrayElement[k-1]))
else:
row.append(str(arrayElement[k-1]))
WeightsWriter.writerow(row)
row = []
尝试在将行添加到 CSV 文件时添加逗号,而不是将逗号添加到数组本身。示例:
row = [1,2,3]
csv.write(str(row)+",") # Writes [1, 2, 3], to CSV file
如果您有许多不同的行并且想用逗号连接它们,您可以使用 ",".join(rows)
用逗号连接行。示例:
rows = []
rowa = [1,2,3]
rows.append(rowa)
rowb = [4,5,6]
rows.append(rowb)
",".join([str(_) for _ in rows]) # Outputs [1, 2, 3],[4, 5, 6]
希望对您有所帮助!
出现引号是因为 CSV 代表 逗号 分隔值。如果它必须包含文字逗号,则需要将其引用。
你做的好像不是"add a comma at the end of a row";您在这里混合了抽象级别。行尾的逗号表示该行中的最后一个值为空。您尝试强制 CSV 生成代码执行一些文本文件级别的操作。
在正确的抽象级别操作意味着向您尝试保存的列表添加一个空字符串:
import csv
import sys # for the sake of example
writer = csv.writer(sys.stdout)
writer.writerow([1, 2, 3]) # writes 1,2,3
writer.writerow([1, 2, 3, '']) # writes 1,2,3,
现在空值前有一个逗号,恰好在行尾。