使用cStringIO时出现Python2 Unicode错误

时间:2015-07-30 20:24:45

标签: python string list

我想循环遍历列表以打印出存储在StringIO缓冲区中的内容。不幸的是,我遇到了一个我似乎无法解决的Unicode问题。

这是我的错误:     ' ASCII'编解码器不能对字符u' \ xa0'进行编码。位置65:序数不在范围内(128)

这是我的代码:

gcloud.watch({  "topicName":
"projects/pipedrivesekoul/topics/my-new-topic",  "labelIds": [  
"INBOX"  ] })

我已经尝试了几件事但是仍然遇到同样的错误,这是我尝试过的:

import CStringIO
def get_string(self, dir=None):
    """
    Get all items as tab-delimited string
    """
    ns_sections = self.get_data(dir)
    out = cStringIO.StringIO()
    try:
        for title, data in ns_sections:
            out.write('#\n# %s\n#\n' % title)
            for row in data:
                out.write('\t'.join([str(item) for item in row]))
                out.write('\n')

    except Exception as e:                
        print (e)


    print "HERE"
    contents = out.getvalue()
    out.close()
    return contents

以下是问题专栏:

out.write('\t'.join([str(item).strip() for item in row]))
out.write('\t'.join([str(item)replace(u'\xa0', u' ') for item in row]))
out.write('\t'.join([str(item).replace('\xa0', ' ') for item in row]))
out.write('\t'.join([str(item).replace('\\xa0', ' ') for item in row]))
out.write('\t'.join([str(item).encode('utf-8').strip() for item in row])) 
out.write('\t'.join([str(item).decode('ascii', 'ignore') for item in row])) 

1 个答案:

答案 0 :(得分:0)

以下是我解决问题的方法。我没有运气,因为我还在使用“str”方法,不正确。

我用“unicode”替换“str”如下:

  out.write('\t'.join([unicode(item).encode('utf-8').strip() for item in row]))