如何将str、UTF8和int混合输出到文本文件?

2024-05-16 11:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含字符串数据(UTF-8)、二进制(true/false/1/0)和整数数据的元组,我想在输出文件中作为行输出。我的部分代码是:

###  Python 2.73

import fileinput
import re
import time
import codecs

uIDfile = '\Python\Fav Test\ppl.ttxt'

InFile = open(uIDfile)
OutFile = codecs.open('C:\Python\Fav Test\S2.ttxt', encoding='utf-8', mode='w')

for user in InFile:
    user = user [:-1]
#   user = unicode(user, 'utf-8').encode('utf-8')

    if 'NNNN' in user:
        break
    else:
        if '@N' in user:
            try:
                Grp = people_getGroups(user_id = user)
                g = 0
                if GetAll:
                    for group in Grp.find('groups').findall('group'):

                        g += 1
                        fErr = ''
                        uID  = user
                        gID  = group.get('ID')
                        gName  =  group.get('name')
                        tup = '\"{0}\"\t\"{2}\"\t\"{1}\"\t''\t{3}\t{4}\t{5}\t{6}\n'.format(uNSID, gNSID, gName, bin1, bin2, int1, int2)
                        OutFile.write(tup.encode('utf-8'))

我试过几个不同版本的输出文件.写入()”声明。错误如下所示。在

^{pr2}$

真诚感谢您的帮助!在


Tags: 文件数据intestimportifgroupopen
1条回答
网友
1楼 · 发布于 2024-05-16 11:37:31

如果您想在文件中输出行,我建议您使用csv module。下面是一个如何使用它的示例:

#-*- coding: utf-8 -*-
import csv
# Use of tempfile instead of hard-coded path, to be cross-platform :)
import tempfile
_, tmppath = tempfile.mkstemp()
out = open(tmppath, 'w')
writer = csv.writer(out)
input = "Te×t Ðåtå".decode('utf-8')
tup = (input.encode('utf-8'), 42, False)
tup
# OUT: ('Te\xc3\x97t \xc3\x90\xc3\xa5t\xc3\xa5', 42, False)
writer.writerow(tup)
out.close()
print(u"Look at me : {}".format(tmppath))

可以使用Dialects and Formatting Parameters精确定义输出文件的格式。在

为了避免UTF8干扰,良好实践,如这些good slides所述:

  • 提前解码
  • Unicode无处不在
  • 编码延迟

相关问题 更多 >