我收到了编码错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 3: ordinal not in range(128)
在以下python(pyspark)代码中,其中row是数据框行:
def rowToLine(row):
line = str(row[0]).strip()
columnNum = 44
for k in xrange(1, columnNum):
line = line + "\t"
line = line + str(row[k]).strip() # encoding error here
return line
我也尝试了下面的连接:
def rowToLine(row):
s = "\t"
return s.join(row)
但该行的某些值为int,因此出现错误:
TypeError: sequence item 19: expected string or Unicode, int found
有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:1)
感谢大家的建议!
我基本上采用了Padraic Cunningham的想法并做了一些修改来处理int情况。以下代码有效。
def rowToLine(row):
s = "\t"
return s.join( x.encode("utf-8") if isinstance(x, basestring) else str(x).encode("utf-8") for x in row)