我有一种情况,我应该在csv文件中读取一行,然后尝试找出该行的第一列是否具有有效的utf-8字符。
以下是我拥有的csv文件中的一小部分示例数据:
Pension Roob,"68233 Kertzmann Mountains Apt. 057, Swiftburgh, NY 18633"
ࠀabaa,"AECS layout main road"
Motel One,"23 Parkstad Germany"
我期望第二行给出错误,但不会发生。
以下是我的Python代码:
import csv
def is_valid_utf_8(word):
try:
check = word.encode('utf-8')
print(check)
except UnicodeEncodeError:
return False
return True
with open('test.csv') as csvfile:
rows = csv.reader(csvfile, delimiter=",")
for row in rows:
if len(row) == 0:
continue
else:
if not is_valid_utf_8(row[0]):
print(f"{row} has something wrong")
我检查非UTF-8字符的方式对吗?
或者我使用的数据样本是错误的。
有人可以给点灯吗?
非常感谢
答案 0 :(得分:1)
建议:
如果要检查字符串是否可转换,则应使用 ascii ,而不是 utf-8 。您的is_valid_utf_8
方法(即is_valid_ascii
)的修复。
这样,您会得到梦vet以求的错误,并检查您想要做什么。
def is_valid_ascii(word):
try:
print(word)
check = word.encode('ascii')
except UnicodeEncodeError:
return False
return True