如何读取csv文件,然后找出文件中的特定字段在Python中是否包含有效的utf-8字符

时间:2018-10-21 08:28:27

标签: python python-3.x

我有一种情况,我应该在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字符的方式对吗?

或者我使用的数据样本是错误的。

有人可以给点灯吗?

非常感谢

1 个答案:

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