2017-08-03 85 views
2

我遇到了麻煩,我的python3腳本,關閉xlsxwriter。我已經包含了workbook.close(),但是這似乎導致了某種錯誤。有誰知道問題是什麼?Xlsxwriter Python3錯誤

import xlsxwriter 
import statistics 

workbook = xlsxwriter.Workbook('data.xlsx') 
worksheet = workbook.add_worksheet() 
bold = workbook.add_format({'bold': True}) 

power = [] 

for row in list: 
    power.append(row) 
    worksheet.write(i, col, row) 
    col += 1 

worksheet.write(i, col, statistics.median(power)) 

workbook.close() 

Traceback (most recent call last): 
    File "example.py", line 71, in <module> 
    workbook.close() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/workbook.py", line 311, in close 
    self._store_workbook() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/workbook.py", line 619, in _store_workbook 
    xml_files = packager._create_package() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/packager.py", line 139, in _create_package 
    self._write_shared_strings_file() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/packager.py", line 286, in _write_shared_strings_file 
    sst._assemble_xml_file() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/sharedstrings.py", line 54, in _assemble_xml_file 
    self._write_sst_strings() 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/sharedstrings.py", line 84, in _write_sst_strings 
    self._write_si(string) 
    File "/usr/local/lib/python3.4/dist-packages/xlsxwriter/sharedstrings.py", line 96, in _write_si 
    string = re.sub('(_x[0-9a-fA-F]{4}_)', r'_x005F\1', string) 
    File "/usr/lib/python3.4/re.py", line 179, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
TypeError: can't use a string pattern on a bytes-like object 
+1

@Rahul XlsxWriter較新,但問題與模塊的新穎性或成熟度無關。 – jmcnamara

+0

@Rahul關於讀取文件的問題沒有任何內容。 – jmcnamara

+0

我很抱歉。我不知道你是作者。我刪除了我的評論和答案。 – Rahul

回答

0

你需要一個像字節對象轉換爲使用.decode一個字符串,例如obj = response.read().decode('utf-8').

在您的機箱內部列表中的對象必須是類型字節,將它們轉換成字符串。

參見Convert bytes to a Python String

0

我添加了一些變量初始化到例如得到它編譯,它似乎在Python 2和3正確地運行:

import xlsxwriter 
import statistics 

workbook = xlsxwriter.Workbook('data.xlsx') 
worksheet = workbook.add_worksheet() 
bold = workbook.add_format({'bold': True}) 

power = [] 

# I added these variables to the OP program. 
list = [1, 2, 3, 4, 5] 
i = 0 
col = 0 

for row in list: 
    power.append(row) 
    worksheet.write(i, col, row) 
    col += 1 

worksheet.write(i, col, statistics.median(power)) 

workbook.close() 

輸出:

enter image description here

我想這和你的例子之間的區別是列表數組的內容。

你能不能更新演示實際問題的示例你的問題?