Python .txt文件中的输出格式不正确

Python .txt文件中的输出格式不正确,python,format,Python,Format,我正在尝试打印到lexic.txt,如下所示: Palabra Tag Apariciones mentales Adj 21 Joaquín_Sánchez_Garrido NP 1 tardíamente Adv 2 repito V 1 filipinos Adj 8 但我得到的结果如下: Palabra Tag Apariciones mentales Adj 21 Joaquín_Sánchez_Garrido NP 1 tardíamente Adv 2 repito

我正在尝试打印到lexic.txt,如下所示:

Palabra Tag Apariciones
mentales Adj 21
Joaquín_Sánchez_Garrido NP 1
tardíamente Adv 2
repito  V 1
filipinos   Adj 8
但我得到的结果如下:

Palabra Tag Apariciones
mentales Adj 
21
Joaquín_Sánchez_Garrido NP 
1
tardíamente Adv 
2
repito  V 
1
filipinos   Adj 
8
下面是Python代码:

file=open('corpus.txt','r')
data=file.readlines()
file.close()

diccionario = {}

for linea in data:
    linea.decode('latin_1').encode('UTF-8') # para los acentos
    palabra_tag = linea.split('\n')
    cadena = str(palabra_tag[0])
    if(diccionario.has_key(cadena)):
        aux = diccionario.get(cadena)
        aux += 1
        diccionario.update({cadena:aux})
    else:
        diccionario.update({cadena:1})

outfile = open('lexic.txt', 'w')
outfile.write('Palabra\tTag\tApariciones\n')

for key, value in diccionario.iteritems() :
    s = str(value)
    outfile.write(key +" "+s+'\n')
outfile.close()
输入文件示例:

Al  Prep
menos   Adv
cinco   Det
reclusos    Adj
murieron    V
en  Prep
las Det
últimas Adj
24  Num
horas   NC
en  Prep
las Det
cárceles    NC
de  Prep
Valencia    NP
y   Conj
Barcelona   NP
en  Prep
incidentes  NC
en  Prep
los Det
que Pron
su  Det
基本上,corpus.txt是一个带有word+标记的训练集,因此程序读取所有输入文件,并编写一个带有word+标记和文件中出现的眼数的输出文件

有人能帮我得到想要的结果吗?我是Python的新手


提前感谢

代码对我来说似乎工作正常;然而,它可以简化为

# Python 3
from collections import Counter

with open("corpus.txt", encoding="latin_1") as inf:
    wordcount = Counter(line.rstrip() for line in inf)

with open("lexic.txt", "w", encoding="utf-8") as outf:
    outf.write('Palabra\tTag\tApariciones\n')
    for word,count in wordcount.items():
        outf.write("{}\t{}\n".format(word, count))


使用format()构造输出字符串时,需要将其设置为UTF-8字符串,以保存单词中的特殊字符。错误消息中提到的“ascii”编码的应用表明了这一点。 使用以下命令:

对于word,在wordcount.iteritems()中计数:
outp.write(u“{}\t{}\n.”格式(字、计数).encode(“utf-8”)

编辑:
抱歉,这本应该在休的近乎完美的解决方案之后出现。我只是回应杰拉德犯的错误。Hugh没有遇到这个问题,因为他运行的是python 3.x,默认情况下以unicode方式处理字符串。

为什么这是标记的机器学习?@tourniquet\u grab现在没事了?可能是
outfile.write(key+'\n'+s+'\n')
?@HerrActress Nope'\n'代表新行,我想要相反的,使键和值保持相同line@gerard啊,对不起,我以为你想在我得到的终端中得到完全相反的结果:TypeError:“encoding”是这个函数的无效关键字参数(第3行)My bad;我只在Python3.4中进行了测试。感谢您的时间和帮助,现在我得到了以下错误:
Traceback(最近一次调用):文件“P4.py”,第9行,在outf.write(“{}\t{}\n.”format(word,count.encode(“utf-8”))unicodedencodeerror:“ascii”编解码器无法对位置3中的字符u'\xf3'进行编码:序号不在范围内(128)
# Python 2
from collections import Counter

with open("corpus.txt") as inf:
    wordcount = Counter(line.decode("latin_1").rstrip() for line in inf)

with open("lexic.txt", "w") as outf:
    outf.write('Palabra\tTag\tApariciones\n'.encode("utf-8"))
    for word,count in wordcount.iteritems():
        outf.write("{}\t{}\n".format(word, count).encode("utf-8"))