Python 制表未正确写入文本文件
Python tabulate not writing to text file correctly
我正在尝试将一个简单列表制成一个使用 tabulate()
格式化的文本文件,fancy_grid
格式是我想要的并且它在控制台中打印正常,但是在写入文本文件时,我得到下面的错误。删除参数 tablefmt='fancy_grid'
使其编写一个简单的 table,但这不是我想要的。我也尝试过使用 docx 格式,但仍然出现相同的错误
这是在 Windows 环境中。
代码
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with open("C:\Users\John\Desktop\kaita.txt", "w") as outf:
outf.write(table)
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")
错误
Traceback (most recent call last):
File "E:/Developement/Desktop Applications/GuiWithWx/Learn/Teach/runpython.py", line 160, in <module>
outf.write(table)
File "C:\Python\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-150: character maps to <undefined>
请添加:.encode("utf-8")
.
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with open("C:\Users\John\Desktop\kaita.txt", "w") as outf:
outf.write(table.encode("utf-8"))
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")
信用:UnicodeEncodeError: 'charmap' codec can't encode characters
我运行它在linux下。它有效。
我认为问题不在tabulate
,而是在写入文件
您可以尝试使用 utf-8
文件格式保存文件:
import io
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with io.open("C:\Users\John\Desktop\kaita.txt", "w", encoding="utf-8") as outf:
outf.write(table)
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")
我正在尝试将一个简单列表制成一个使用 tabulate()
格式化的文本文件,fancy_grid
格式是我想要的并且它在控制台中打印正常,但是在写入文本文件时,我得到下面的错误。删除参数 tablefmt='fancy_grid'
使其编写一个简单的 table,但这不是我想要的。我也尝试过使用 docx 格式,但仍然出现相同的错误
这是在 Windows 环境中。
代码
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with open("C:\Users\John\Desktop\kaita.txt", "w") as outf:
outf.write(table)
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")
错误
Traceback (most recent call last):
File "E:/Developement/Desktop Applications/GuiWithWx/Learn/Teach/runpython.py", line 160, in <module>
outf.write(table)
File "C:\Python\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-150: character maps to <undefined>
请添加:.encode("utf-8")
.
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with open("C:\Users\John\Desktop\kaita.txt", "w") as outf:
outf.write(table.encode("utf-8"))
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")
信用:UnicodeEncodeError: 'charmap' codec can't encode characters
我运行它在linux下。它有效。
我认为问题不在tabulate
,而是在写入文件
您可以尝试使用 utf-8
文件格式保存文件:
import io
from tabulate import tabulate
l = [['{:<118}.'.format("Hassan"), 21, "LUMS"], ["Ali", 22, "FAST"], ["Ahmed", 23, "UET"]]
table = tabulate(l, headers=['Name', 'Age', 'University'], tablefmt='fancy_grid', showindex="always")
with io.open("C:\Users\John\Desktop\kaita.txt", "w", encoding="utf-8") as outf:
outf.write(table)
os.startfile("C:\Users\John\Desktop\kaita.txt", "print")