这可能是微不足道的,但我尝试了很多但没有奏效。
我有以下代码:
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 = []
答案 0 :(得分:2)
出现引号,因为CSV代表逗号 - 分隔值。如果必须包含文字逗号,则需要引用它。
你似乎要做的就是不要在一行的末尾添加一个逗号&#34 ;;你在这里混合抽象级别。行尾的逗号表示此行中的最后一个值为空。您尝试强制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,
现在之前有一个逗号空值,恰好位于该行的末尾。
答案 1 :(得分:1)
尝试将逗号添加到数组本身,而不是在将行添加到CSV文件时添加逗号。例如:
public function __construct() {
$this->middleware( 'auth')->except(['index', 'show']);
}
如果您有许多不同的行并希望使用逗号加入它们,则可以使用row = [1,2,3]
csv.write(str(row)+",") # Writes [1, 2, 3], to CSV file
以逗号连接行。例如:
",".join(rows)
希望这有帮助!