首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xlsxwriter Python3错误

Xlsxwriter Python3错误
EN

Stack Overflow用户
提问于 2017-08-03 14:04:47
回答 2查看 1.5K关注 0票数 2

在关闭xlsxwriter时,我的python3脚本遇到了问题。我已经包含了workbook.close(),但这似乎导致了某种错误。有人知道问题出在哪里吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-03 16:27:57

我在示例中添加了一些变量初始化来编译它,它似乎可以在Python 2和3上正确运行:

代码语言:javascript
复制
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()

输出:

我猜这和你的例子的区别在于列表数组的内容。

你能用一个演示实际问题的例子来更新你的问题吗?

票数 1
EN

Stack Overflow用户

发布于 2017-08-03 14:26:45

您需要使用.decode将类似字节的对象转换为字符串,例如obj = response.read().decode('utf-8').

在你的例子中,列表中的对象必须是字节类型,将它们转换为字符串。

请参阅Convert bytes to a Python String

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45476062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档