这需要一个唯一的分隔符的文本CSV文字串(CSV writing strings of text t

2019-10-19 10:22发布

我写了一个HTML解析器在Python中提取数据,看起来像这样在一个CSV文件:

    itemA, itemB, itemC, Sentence that might contain commas, or colons: like this,\n

所以我用一个delmiter“:::::”的思想,它不会在数据开采

    itemA, itemB, itemC, ::::: Sentence that might contain commas, or colons: like this,::::\n

这适用于大多数的千行,但是,显然是一个冒号:抵消这种当我导入CSV的计算器。

我的问题是,什么是最好的或唯一的分隔符来创建与需要一些分隔符分隔句子的许多变化的CSV时使用? 我是不是正确的,因为它们分离CSV中的值理解分隔符?

Answer 1:

正如我在评论非正式建议,唯一只是意味着你需要使用一些字符,将不会在数据- chr(255)可能是一个不错的选择。 例如:

import csv

DELIMITER = chr(255)
data = ["itemA", "itemB", "itemC",
        "Sentence that might contain commas, colons: or even \"quotes\"."]

with open('data.csv', 'wb') as outfile:
    writer = csv.writer(outfile, delimiter=DELIMITER)
    writer.writerow(data)

with open('data.csv', 'rb') as infile:
    reader = csv.reader(infile, delimiter=DELIMITER)
    for row in reader:
        print row

输出:

 ['itemA', 'itemB', 'itemC', 'Sentence that might contain commas, colons: or even "quotes".']

如果你不使用csv模块,而是在写和/或手动读取数据,然后它会去是这样的:

with open('data.csv', 'wb') as outfile:
    outfile.write(DELIMITER.join(data) + '\n')

with open('data.csv', 'rb') as infile:
    row = infile.readline().rstrip().split(DELIMITER)
    print row


Answer 2:

是的,定界符CSV文件的每行内的单独的值。 有两种策略来界定,有很多标点符号的文字。 首先,你可以引用值,例如:

Value 1, Value 2, "This value has a comma, <- right there", Value 4

第二种策略是使用制表符(即, '\t' )。

Python的内置CSV模块可以读取和写入使用引号的CSV文件。 看看下面的示例代码的csv.reader功能 。 内置的CSV模块将正确处理引号,例如,它会逃跑是在本身的价值的报价。



Answer 3:

CSV文件通常使用双引号"包可能包含字段分隔符如逗号长字段如果该字段包含双引号它用反斜杠转义: \"



文章来源: CSV writing strings of text that need a unique delimiter