UnicodeEncodeError:' ascii'编解码器不能对字符u' \ ufffd'进行编码。位置3:序数不在范围内(128)

时间:2016-06-06 22:25:09

标签: python dataframe pyspark

我收到了编码错误:

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

有谁知道如何解决这个问题?谢谢!

1 个答案:

答案 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)