2017-08-03 81 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

我想这和你的例子之间的区别是列表数组的内容。

你能不能更新演示实际问题的示例你的问题?