我想将3列中的字典值写入python文件中。值的顺序无关紧要。
我有这本字典dict_cols
:
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
以下代码将所有值写入文本文件:
with open("output.txt", "w") as f:
for k, v in dict_cols.items():
f.write(v + ", ")
output.txt
将具有以下内容:
c1, c2, c3, c4, c5, c6,
我该如何修改代码以将以下内容打印到第3列中的output.txt
,如下所示?
c1, c2, c3,
c4, c5, c6
我正在使用python v3.6
答案 0 :(得分:2)
对代码的主要修改将是在逗号和换行符之间替换分隔符。这是通过枚举跟踪序列中位置的一种方法:
char* readBinaryFile(const char* fileName) {
ifstream file(fileName, ios::binary || ios::ate);
// get the size of file
streampos beg, end;
beg = file.tellg();
file.seekg(0,ios::end);
end = file.tellg();
long size = end - beg;
char* buffer = new char[size];
// now read the file into buffer
file.seekg(0, ios::beg);
file.read(buffer, size);
file.close();
return buffer;
}
答案 1 :(得分:2)
这与@Mad Physicist的答案类似,但是它不使用列表来保存行尾(节省内存),它仅遍历字典的值而不是(未使用的)键和值。
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
col = 1
with open('tmp.txt', 'w') as fp:
for i, v in enumerate(dict_cols.values()):
sep = '' if i == len(dict_cols) - 1 else ','
fp.write(v + sep)
if col == 3:
fp.write('\n')
col = 0
col += 1
答案 2 :(得分:1)
这是我的方式,如果我必须说实话,我会选择@Ben的答案,因为它的代码更少,效率更高且易于阅读,但这就是它的工作方式。首先,我将列表的不同值分离到它们所在的行中,然后获取每个值并打印出来。
file = "test.txt"
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
dict_values = dict_cols.values()
with open (file,"w") as f:
count = -1
sep_values = []
for ind,value in enumerate(dict_values):
if ind%3 ==0:
count+=1
sep_values.append("")
if ind != len(dict_values)-1:
end = ", "
else:
end = ""
sep_values[count] += value+end
for value in sep_values:
f.write(value+"\n")
答案 3 :(得分:1)
这很不雅致,但效果很好
dict_cols = {'1': 'c1', '2': 'c2', '3': 'c3', '4': 'c4', '5': 'c5', '6': 'c6'}
line_sep = ',\n'
with open("output.txt", "w") as f:
f.write(', '.join([v for v in dict_cols.values()][:3]) + line_sep +
', '.join([v for v in dict_cols.values()][3:]))