Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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
使用csv.reader在Python中读取同一文件中具有两个不同分隔符的文件_Python_Mysql_Csv - Fatal编程技术网

使用csv.reader在Python中读取同一文件中具有两个不同分隔符的文件

使用csv.reader在Python中读取同一文件中具有两个不同分隔符的文件,python,mysql,csv,Python,Mysql,Csv,我想将一个文件从MySQL导入python,但在同一行的同一文件中有两种类型的分隔符 例如: FIELDA_FIELDB_FIELDC; FILEDD; FIELDE; FIELDF 我可以使用\uuu或进行拆分但找不到如何同时执行这两项操作 我试过了 csv_data = csv.reader(csvfile, delimiter=';' and '_') csv_data = csv.reader(csvfile, delimiter=';' or'_') 我也尝试过使用csv.snif

我想将一个文件从MySQL导入python,但在同一行的同一文件中有两种类型的分隔符

例如:

FIELDA_FIELDB_FIELDC; FILEDD; FIELDE; FIELDF
我可以使用
\uuu
进行拆分但找不到如何同时执行这两项操作

我试过了

csv_data = csv.reader(csvfile, delimiter=';' and '_')
csv_data = csv.reader(csvfile, delimiter=';' or'_')
我也尝试过使用csv.sniffer

但每次只使用一个分隔符


该怎么办?

CSV文件只能有一个分隔符,因此您的方法无法工作。如果无法修复损坏的文件,可以分两步读取(假设Python 2):


当然,这种解决方案对于转义的
\uu
分隔符等东西来说是幼稚的,但它可能会按照您的预期工作

显而易见的答案是更改文件源,使其以正确的格式生成文件,而不是在此之后修复损坏的文件。但我想你不能这样做?我可以在将文件插入数据库之前从FTP获取文件。;所以我想我可以先更正文件。我希望有一个简单的方法什么会更好更快?我应该在使用干净的CSV之前替换“u”分隔符吗?还是用你的方法?
csv_data = []
with open("file.csv", "rb") as csvfile:
    reader = csv.reader(csvfile, delimiter=";")
    for row in reader:
        new = []
        for item in row:
            new.extend(item.split("_"))
        csv_data.append(new)