Python CSV嗅探器检测双引号文本限定符

时间:2018-09-24 12:20:42

标签: python csv sniffer

我正在编写一个Python脚本来解析目录中的csv文件,并为找到的每个文件输出SQL CREATE TABLE语句。

directory = os.fsencode(".")
for file in os.listdir(directory):
    filename = os.fsdecode(file)

    if filename.endswith(".csv"): 
        f = open(filename, 'r', encoding="iso-8859-1")
        dialect = csv.Sniffer().sniff(f.read(4096))
        f.seek(0)
        reader = csv.reader(f, dialect)

我的数据的一个简单示例如下:

ID|Text1|Text2|Year

"123"|"more data"|"A pipe symbol | typed by an end user"|"2014"

包含双引号以防止将用户键入的管道解释为定界符。

以下是嗅探器作为我的实际数据的方言返回的内容:

['delimiter', 'doublequote', 'escapechar', 'lineterminator', 'quotechar', 'quoting', 'skipinitialspace']

['|', False, None, '\r\n', '"', 0, False]

我正在尝试使用适应于此的代码来处理数据中的值: https://www.periscopedata.com/blog/python-create-table

所有列均返回varchar,除第一列和最后列以外的所有列均返回varchar(0)。

我在想这是因为嗅探器没有为'doublequote'返回正确的值。

0 个答案:

没有答案