我一直在努力解决这个问题。我试图从 DB_user 列中删除非 ASCII 字符并尝试用空格替换它们。但我不断收到一些错误。这是我的数据框的样子:
+------------------------------------------------ ----------
| DB_user 源计数 |
+------------------------------------------------ ----------
| ???/"Ò|Z?)?]??C %??JA 10 |
| ?D$ZGU ;@D??_???T(?) B 3 |
| ?Q`H??M'?Y??KTK$?ً???ЩJL4??*?_?? C 2 |
+------------------------------------------------ ----------
我正在使用这个功能,这是我在研究 SO 上的问题时遇到的。
def filter_func(string):
for i in range(0,len(string)):
if (ord(string[i])< 32 or ord(string[i])>126
break
return ''
And then using the apply function:
df['DB_user'] = df.apply(filter_func,axis=1)
我不断收到错误:
'ord() 需要一个字符,但找到了长度为 66 的字符串',u'出现在索引 2'
但是,我想通过在 filter_func 函数中使用循环,我通过将一个字符输入到“ord”中来处理这个问题。因此,当它遇到非 ASCII 字符时,应将其替换为空格。
有人可以帮帮我吗?
谢谢!
原文由 red_devil 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码失败,因为您没有将它应用于每个字符,您正在为每个单词和 ord 错误应用它,因为它需要一个字符,您需要:
您还可以使用链式比较来简化联接:
您还可以使用
string.printable
来过滤字符:最快的是使用翻译:
有趣的是,这比: