Python 删除csv文件中不需要的引号和逗号

Python 删除csv文件中不需要的引号和逗号,python,Python,我需要从csv文件中删除不需要的引号和逗号。样本数据如下所示 header1, header2, header3, header4 1, "ABC", BCD, "EDG",GHT\2\TST" 最后一列有一些自由文本值,看起来像是一个新列,但它在excel中打开,然后看起来像这样 EDG",GHT\2\TST 请指导我修复最后一列 试过这个- sed 's/","/|/g' $filename | sed 's/|",/||/g' | sed 's/|,"/|/g'

我需要从csv文件中删除不需要的引号和逗号。样本数据如下所示

header1, header2, header3, header4
1,       "ABC",   BCD,     "EDG",GHT\2\TST"
最后一列有一些自由文本值,看起来像是一个新列,但它在excel中打开,然后看起来像这样

EDG",GHT\2\TST
请指导我修复最后一列

试过这个-

sed 's/","/|/g' $filename | sed 's/|",/||/g' | sed 's/|,"/|/g' | sed 's/",/ /g' | sed 's/^.//' | awk '{print substr($0, 1, length($0)-1)}' | sed 's/,/ /g' | sed 's/"/ /g' | sed 's/|/,/g' > "out_"$filename
这应该从列中找到
,并将其替换为空

df = df.str.replace('[",]','',regex=True)

您可以这样做:

打开(“data.txt”、“r”)作为f:
对于f.readlines()中的行:
列=行。拆分(“,”)#按“,”拆分
列[3]=“”。联接(列[3:])#将列4合并到…最后
列[3]=列[3]。替换(“\”,“”)。替换(“,”)``删除不需要的字符
删除列[4:]#删除所有不必要的列
打印(“%s |%s |%s |%s”%(列[0]、列[1]、列[2]、列[3]))
My data.txt文件:

1, "ABC", BCD, "EDG",GHT\2\TST"
2, "CBA", DCB, "GDV",DHZ,\2RS"
输出:

1 | "ABC" | BCD | EDGGHT\2\TST

2 | "CBA" | DCB | GDVDHZ\2RS

只有最后一列包含逗号时,此解决方案才有效。

能否请您共享您希望最后一列的外观?这看起来不像有效的CSV文件删除引号和逗号后,最后一列的值应该看起来像EDG GHT\2\TST,以便我可以在HiveI中加载它假定这是来自熊猫数据帧,但也许不是。这只是一个文件吗?我认为您可以告诉excel使用制表符分隔符而不是逗号分隔符,它应该正确地读取它?但这可以替换列标题2值“ABC”中的“valid”,我不希望它被替换,我只希望它被替换为已在“”中的任何值,如“EDG”、GHT\2\TST,而不是“ABC”,那么,这只是一个获得正确正则表达式的问题吗?我不太擅长正则表达式,所以这对我来说不是那么简单。这个正则表达式有效吗
“(“|,)[.]*
能够通过使用sed和awk组合来完成,如下所示:``sed's/”、“/|/g'$filename | sed's/|“、/|/g'/sed's/”、///g'| sed's/^.//''awk'{print substr($0,1,长度($0)-1)`sed's/,///g'/g'/sed's/,///g'/sed's/“sed's/,///U124G''s/”$filename``谢谢Theo的帮助,但是这些值可以出现在csv文件的任何列中,所以您无法确定哪列是哪列。。。CSV文件使用逗号分隔列。也许您可以在导出数据之前为逗号添加转义符?这是正确的。当我在MS Excel中打开csv时,它会正确地打开它,并能向我显示哪一列是哪一列,但当我使用opencsv serde将此csv加载到Hive外部表中时,由于不需要的“组合”,值会发生移动。某些系统使用
(逗号和空格)来拆分列,这始终是您的情况吗?它仅用逗号分隔。