删除csv-fi中不需要的引号和逗号

2024-03-29 12:56:53 发布

您现在位置: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' | sed 's/",/ /g' | sed 's/^.//' | awk '{print substr($0, 1, length($0)-1)}' | sed 's/,/ /g' | sed 's/"/ /g' | sed 's/|/,/g' > "out_"$filename

Tags: 文件csv数据filenamesed引号样本逗号
2条回答

你可以这样做:

with open("data.txt", "r") as f:
        for line in f.readlines():
                columns = line.split(", ") # Split by ", "
                columns[3] = "".join(columns[3:]) # Merge columns 4 to ... last
                columns[3] = columns[3].replace("\"", "").replace(",", "")` # Removing unwanted characters
                del columns[4:] # Remove all unnecessary columns

                print("%s | %s | %s | %s" % (columns[0], columns[1], columns[2], columns[3]))

我的数据.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

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

这应该从列中找到",,并将其替换为nothing

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

相关问题 更多 >