如何使用python中的函数更正错误并使dataframe成为文本文件
我正在创建一个将数据帧转换为.txt文件的函数如何使用python中的函数更正错误并使dataframe成为文本文件,python,text-files,Python,Text Files,我正在创建一个将数据帧转换为.txt文件的函数 import pandas as pd def print_table(dataframe): headers = dataframe.columns.to_list() table = dataframe.values.tolist() with open('file.txt','w') as file: file.write(''.join(column.rjust(40) for column in
import pandas as pd
def print_table(dataframe):
headers = dataframe.columns.to_list()
table = dataframe.values.tolist()
with open('file.txt','w') as file:
file.write(''.join(column.rjust(40) for column in headers))
for row in table:
with open('file.txt','w') as file1:
file1.write(''.join(str(column).ljust(20) for column in row))
df = pd.DataFrame({'Yoruba': ['Wèrè èèyàn ní ńwípé irú òun ò sí; irú ẹ̀ẹ́ pọ̀ ó ju ẹgbàágbèje lọ.','Wọ́n ńpe gbẹ́nàgbẹ́nà ẹyẹ àkókó ńyọjú.'],
'Translation': ['Only an imbecile asserts that there is none like him or her; his or her likes are numerous, numbering more than millions.',
'The call goes out for a carpenter and the woodpecker presents itself.'],
'Meaning': ['No one is incomparable.',
"One should not think too much of one's capabilities."]})
这就是我想要的.txt文件的样子
Yoruba Translation Meaning
"Wèrè èèyàn ní ńwípé irú òun ò sí; irú ẹ̀ẹ́ pọ̀ ó ju ẹgbàágbèje lọ." "Only an imbecile asserts that there is none like him or her; his or her likes are numerous, numbering more than millions." "No one is incomparable."
"Wọ́n ńpe gbẹ́nàgbẹ́nà ẹyẹ àkókó ńyọjú." "The call goes out for a carpenter and the woodpecker presents itself." "One should not think too much of one's capabilities."
**and not this**
Yoruba Translation Meaning
"Wèrè èèyàn ní ńwípé irú òun ò sí; irú ẹ̀ẹ́ pọ̀ ó ju ẹgbàágbèje lọ." "Only an imbecile asserts that there is none like him or her; his or her likes are numerous, numbering more than millions." "No one is incomparable."
"Wọ́n ńpe gbẹ́nàgbẹ́nà ẹyẹ àkókó ńyọjú." "The call goes out for a carpenter and the woodpecker presents itself." "One should not think too much of one's capabilities."
但这就是我犯的错误
UnicodeEncodeError:“charmap”编解码器无法对位置14中的字符“\u0144”进行编码:字符映射到
fout = open("file.txt", 'w', encoding='utf-8')
df = df[['Yoruba', 'Translation', 'Meaning']]
lengths = [len(max(val, key=len)) for val in df.values.T]
for i in range(len(df.columns)-1):
fout.write("{heading:<{length}} ".format(heading=df.columns[i], length=lengths[i]))
fout.write("{}\n".format(df.columns[-1]))
rows, columns = df.values.shape
for i in range(rows):
for j in range(columns-1):
fout.write("{val:<{number}} ".format(val=df.values[i,j], number=lengths[j]))
fout.write("{}\n".format(df.values[i, j+1]))
fout.close()
fout=open(“file.txt”,“w”,encoding='utf-8')
df=df[['Yoruba','Translation','means']]
长度=[len(max(val,key=len))表示df.values.T中的val]
对于范围内的i(长度(测向列)-1):
write(“{heading:在本例中,您的输入文本编码和您试图执行的panda输出编码之间似乎存在问题
请看一下这个答案:关于如何在写和读字符时处理编码和解码字符(您可能需要不同的UTF-8!)
至于输出样式,一种更简单的机制可能是使用csv,如图所示
并使用空格进行分隔,因为您的数据已经是pandas提供的表格形式
在我的案例中,这是使用联接的一种替代方法。如果您有任何其他问题,请尝试使用编码/解码
import pandas as pd
import csv
def print_table(dataframe):
with open('file.csv', 'w', newline="") as csvfile:
writer = csv.writer(csvfile, delimiter="\t", quotechar='', quoting=csv.QUOTE_NONE)
writer.writerow(heading) for heading in dataframe.columns)
for row in dataframe.values:
writer.writerow(row)
df = pd.DataFrame({
'Yoruba': [
'Wèrè èèyàn ní ńwípé irú òun ò sí; irú ẹ̀ẹ́ pọ̀ ó ju ẹgbàágbèje lọ.',
'Wọ́n ńpe gbẹ́nàgbẹ́nà ẹyẹ àkókó ńyọjú.'
],
'Translation': [
'Only an imbecile asserts that there is none like him or her; his or her likes are numerous, '
'numbering more than millions.',
'The call goes out for a carpenter and the woodpecker presents itself.'
],
'Meaning': [
'No one is incomparable.',
"One should not think too much of one's capabilities."
]
})
print_table(df)