簡體   English   中英

Python腳本沒有將整個行放在Excel電子表格中

[英]Python script not putting entire line in excel spreadsheet

我有一個Python腳本,它可以下拉HTML,從中剝離想要的部分,並提供一個部分看起來像這樣的列表:

...
San Onofre SB
Otay Mesa
Platteville NB
Platteville SB
...

腳本的最后一部分將所有這些行放入Excel電子表格中的自己行中。 這段代碼看起來像這樣:

print "Now let's put it in a spreadsheet..."
time.sleep(1)
f = open('Out.txt', 'r+') #The file that's created earlier in the script with the list
row_list = []
for row in f:
    row_list.append(row.split())
column_list = zip(*row_list)

rb = open_workbook("CVO.xls",formatting_info=True)
r_sheet = rb.sheet_by_index(0) 
wb = copy(rb) 
w_sheet = wb.get_sheet(0) 
i = 2 
for column in column_list:
    for item in range(len(column)):
        w_sheet.write(item, i, column[item])
    wb.save('CVO.xls')
    i+=1

f.close()
os.remove("Out.txt")
print "Success!"
time.sleep(2)

結果部分如下所示:

...
San
Otay
Platteville
Platteville
...

我認為由於行的拆分方式而遺漏了部分,但是我不確定如何使它包括整行。

有任何想法嗎?

謝謝!!

編輯

目標是將整個生產線(San Onofre SB,Otay Mesa等)放在自己的行中。 現在,它做到了,除了第一個單詞外,其他所有單詞都消失了(將San Onofre SB變成了San)。

對困惑感到抱歉。

您的問題出在zip zip截短到其可迭代的最短值,例如:

>>> zip(*[[1, 2, 3], [4, 5], [6, 7, 8]])
[(1, 4, 6), (2, 5, 7)]

幸運的是,您不需要zip ,我也不知道為什么要這么做。 要將每個單詞寫在單獨的列中,只需遍歷row_list結構:

col_offset = 2
for (rownum, words) in enumerate(row_list):
    for (colnum, word) in enumerate(words):
        w_sheet.write(rownum, colnum + col_offset, word)

enumerate輸入中可迭代的每個元素的產量(index, pair)值,以便自動在序列中移動。 col_offset是因為enumerate的索引為0,並且您的示例代碼顯示i=2設置了起始列。

如果您不想將單詞放在單獨的列中,請不要分割行-只需strip()除去換行符即可。 如果必須將它們拆分以進行以前的處理,請使用join()重新組合它們:

colnum = 2
for (rownum, words) in enumerate(row_list):
    w_sheet.write(rownum, colnum, ' '.join(words))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM