Я - большой поклонник Автогорячая клавиша . Я определил 'макрос' простого текста вставки, который работает в любом приложении. Это работает, когда я нажимаю Ctrl+Shift+V, и вставляет простую версию того, что находится на буфере обмена. Хорошая вещь об Автогорячей клавише: можно кодировать вещи работать способ, которым Вы хотите, чтобы они работали через все приложения.
^+v::
; Convert any copied files, HTML, or other formatted text to plain text
Clipboard = %Clipboard%
; Paste by pressing Ctrl+V
SendInput, ^v
return
Python dict
НЕ поддерживает порядок до 3.6 (но, несмотря на это, в этой версии класс csv.DictReader
был изменен, чтобы возвращать OrderedDict
] с).
Однако экземпляр csv.DictReader
, который вы используете (после того, как вы прочитали первую строку! -) , имеет .fieldnames
] список строк, который IS по порядку.
Итак,
for rowdict in myReader:
print ['%s:%s' % (f, rowdict[f]) for f in myReader.fieldnames]
покажет вам, что порядок действительно поддерживается (конечно, в .fieldnames
, НИКОГДА в dict
- это невозможно в Python! -).
Итак, предположим, вы хотите прочитать a.csv
и написать b.csv
с тем же порядком столбцов. Использовать простой читатель и писатель слишком просто, поэтому вы хотите вместо этого использовать разновидности Dict ;-). Ну, один из способов - это ...:
import csv
a = open('a.csv', 'r')
b = open('b.csv', 'w')
ra = csv.DictReader(a)
wb = csv.DictWriter(b, None)
for d in ra:
if wb.fieldnames is None:
# initialize and write b's headers
dh = dict((h, h) for h in ra.fieldnames)
wb.fieldnames = ra.fieldnames
wb.writerow(dh)
wb.writerow(d)
b.close()
a.close()
при условии, что у вас есть заголовки в a.csv
(иначе вы не можете использовать на нем DictReader) и хотите те же заголовки в b. csv
.