>我有一个案例,我应该读取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 字符的方法是否正确?
还是我使用的数据样本是错误的。
有人可以投掷一些光芒吗?
提前非常感谢
建议:
如果要检查字符串是否可转换,则应使用ascii,而不是utf-8。修复了is_valid_utf_8
方法,即is_valid_ascii
.
这样,您将获得令人垂涎的错误,并检查您想要的内容。
def is_valid_ascii(word):
try:
print(word)
check = word.encode('ascii')
except UnicodeEncodeError:
return False
return True