Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的csv文件之间用“分隔”\";而不是逗号(“,”)?_Python_Excel_Csv_Comma_Reader - Fatal编程技术网

Python 为什么我的csv文件之间用“分隔”\";而不是逗号(“,”)?

Python 为什么我的csv文件之间用“分隔”\";而不是逗号(“,”)?,python,excel,csv,comma,reader,Python,Excel,Csv,Comma,Reader,我从互联网下载了数据,并保存为csv(逗号分隔)文件。此图显示了文件在excel中的外观 使用python中的csv.reader,我打印了每一行。我在下面展示了我的代码以及Spyder中的输出 import csv with open('p_dat.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) 我很困惑为什么我的值没有逗号分隔。任何帮助都将不胜感激 请

我从互联网下载了数据,并保存为csv(逗号分隔)文件。此图显示了文件在excel中的外观

使用python中的
csv.reader
,我打印了每一行。我在下面展示了我的代码以及Spyder中的输出

import csv

with open('p_dat.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
我很困惑为什么我的值没有逗号分隔。任何帮助都将不胜感激

请参见。文件中的分隔符有许多选项。在本例中,您有一个选项卡,
\t


这个选择很重要。假设您的数据中有逗号,那么一个
作为分隔符将不是一个好的选择。

正如注释中指出的,从技术上讲,这是一个TSV(制表符分隔),实际上是完全有效的

当然,在实践中,并不是所有的库都会对TSV和CSV进行“硬”区分。解析TSV的方式与解析CSV的方式基本相同,只是分隔符不同


这种文件实际上有多个有效的分隔符,例如制表符、逗号和分号。您选择哪一个实际上是偏好的问题,而不是“硬”技术限制。

尽管它们被命名为逗号分隔值,但有时它们由不同的符号分隔(如您当前使用的制表符)

如果要使用Python将其视为逗号分隔的文件,可以尝试以下操作:

 import csv
...
        with open('p_dat.csv', 'r') as file:
            reader = csv.reader(file)
            for row in reader:
               commarow = row.replace("\t",",")
               print(commarow) 

不确定这与python有什么关系,但看起来您有一个TSV(制表符分开),而不是一个csv。用文本编辑器打开“.csv”文件。。请注意,它不是“CSV”。适当调整预期/使用/导出。请不要发布代码、数据或回溯的图像。复制并粘贴为文本,然后将其格式化为代码(选择它并键入
ctrl-k
)现在“CSV”表示“字符分隔值”,而不是“逗号分隔值”。请参阅维基百科上的文章。你的最后一点并不完全正确。在这种情况下,您只需在该单元格周围加引号。(不过,如果单元格中同时包含逗号和引号,则会有点难看)。更合适的做法是,这些不使用逗号作为字段分隔符的文件应称为“分隔文本文件”。真正的CSV是一个分隔的文本文件,它使用逗号作为字段分隔符,双引号作为文本分隔符。TSV使用制表符而不是逗号。一致性和相关性(法律审查数据库)可以使用.DAT文件,其中ASCII 20作为字段分隔符,ASCII 254作为文本分隔符。还有更多这样的格式,有些格式带有额外的分隔符。
csv.reader
附带了一个
delimiter
关键字参数,因此您可以使用它,而不是在每行中手动替换它