无法让数据适合 CSV 文件中的单个单元格,怎么办?
Can't get the data to fit in a single cell in a CSV file, what to do?
这是我试过的代码,得到了以下结果。已经尝试了各种方法来解决这个问题。 CSV 文件中的数据似乎分布在多个列和行中,这对我的项目来说并不理想。我已经了解到,可能存在导致此问题的单个单元格阈值的内存。
for i in range(len(read1)):
if read1[i] in opcodes:
seq = seq + " " + read1[i]
print(seq)
csvname="/content/drive/MyDrive/sequence.csv"
#approach1
'''
dict1 = {"sequence":seq, "target":1}
'''
#apprach 2
'''
with open(csvname, 'w') as csvfile:
csvwriter = csv.writer(csvfile)
# writing the fields
# writing the data rows
csvwriter.writerow(seq)
break
'''
'''
a_file = open(csvname, "w", newline="")
df = pd.DataFrame(dict1, index=[0])
#print(df)
# saving the dataframe
df.to_csv('/content/drive/MyDrive/sequence.csv', mode='a', index=False, header=False)
'''
#approach 3 -- very bad results
'''
csv_file = open(csvname, "w")
csv_file.write(seq)
'''
a_file.close()
请注意,我已经评论了解决这个问题的各种方法,而且所有方法似乎都给出了相似的输出
It is spread over multiple cells and columns and rows. P.S: huge dataset
请注意,CSV 文件无法指定 Excel 其显示方式。加载时,您需要将列拖得更宽。如果您想要单个单元格 CSV,它可以是其中任何地方没有逗号的任何数据。
下面的方法会给你一个单元格,但它仍然会出现在多个单元格中。列表理解可用于从 read1
和 opcodes
创建 seq
。这比重复附加字符串更有效。
import csv
opcodes = ['cmp', 'add', 'dev', 'mov', 'retn', 'push', 'pop', 'lea'] # example data
read1 = ['cmp', 'test', 'add', 'sub', 'dev', 'mov', 'mul', 'retn', 'push']
seq = ' '.join(op for op in read1 if op in opcodes)
with open('output.csv', 'w', newline='') as f_output:
csv.writer(f_output).writerow([seq])
给你一个文件包含:
cmp add dev mov retn push
这最初会在 Excel 中显示为:
但是如果您拖动该列,您将得到:
如果您想自动更改 Excel 显示数据的方式,您需要将数据保存为 Excel 格式 .xlsx
。然后可以指定列宽。这可以使用 openpyxl
.
等库来完成
注意:可以按如下方式添加第二列:
csv.writer(f_output).writerow([seq, 'a second column'])
这是我试过的代码,得到了以下结果。已经尝试了各种方法来解决这个问题。 CSV 文件中的数据似乎分布在多个列和行中,这对我的项目来说并不理想。我已经了解到,可能存在导致此问题的单个单元格阈值的内存。
for i in range(len(read1)):
if read1[i] in opcodes:
seq = seq + " " + read1[i]
print(seq)
csvname="/content/drive/MyDrive/sequence.csv"
#approach1
'''
dict1 = {"sequence":seq, "target":1}
'''
#apprach 2
'''
with open(csvname, 'w') as csvfile:
csvwriter = csv.writer(csvfile)
# writing the fields
# writing the data rows
csvwriter.writerow(seq)
break
'''
'''
a_file = open(csvname, "w", newline="")
df = pd.DataFrame(dict1, index=[0])
#print(df)
# saving the dataframe
df.to_csv('/content/drive/MyDrive/sequence.csv', mode='a', index=False, header=False)
'''
#approach 3 -- very bad results
'''
csv_file = open(csvname, "w")
csv_file.write(seq)
'''
a_file.close()
请注意,我已经评论了解决这个问题的各种方法,而且所有方法似乎都给出了相似的输出
It is spread over multiple cells and columns and rows. P.S: huge dataset
请注意,CSV 文件无法指定 Excel 其显示方式。加载时,您需要将列拖得更宽。如果您想要单个单元格 CSV,它可以是其中任何地方没有逗号的任何数据。
下面的方法会给你一个单元格,但它仍然会出现在多个单元格中。列表理解可用于从 read1
和 opcodes
创建 seq
。这比重复附加字符串更有效。
import csv
opcodes = ['cmp', 'add', 'dev', 'mov', 'retn', 'push', 'pop', 'lea'] # example data
read1 = ['cmp', 'test', 'add', 'sub', 'dev', 'mov', 'mul', 'retn', 'push']
seq = ' '.join(op for op in read1 if op in opcodes)
with open('output.csv', 'w', newline='') as f_output:
csv.writer(f_output).writerow([seq])
给你一个文件包含:
cmp add dev mov retn push
这最初会在 Excel 中显示为:
但是如果您拖动该列,您将得到:
如果您想自动更改 Excel 显示数据的方式,您需要将数据保存为 Excel 格式 .xlsx
。然后可以指定列宽。这可以使用 openpyxl
.
注意:可以按如下方式添加第二列:
csv.writer(f_output).writerow([seq, 'a second column'])