从CSV文件中删除双引号

时间:2019-07-04 13:51:32

标签: python python-3.x csv

我想通过删除csv中的所有引号来清理字符串中间有双引号的CSV文件。
例如:安娜是“光荣的”。我希望删除引号,以便让我成为Ana

我正在尝试用空格替换“,但我无法同时使用w和r的csv。如何清除数据?

import csv
with open('/var/lib/neo4j/import/MRCONSO.csv',"r+",encoding="utf-8") as csv_file:
    for data in csv_file:
        data = [d.replace('"', '') for d in data]

我希望CSV结构不会更改,只有引号会被删除。

3 个答案:

答案 0 :(得分:3)

您不必重复行,您只需阅读全部内容,像平常一样使用replace,然后编写新内容:

with open('/var/lib/neo4j/import/MRCONSO.csv', "r+", encoding="utf-8") as csv_file:
    content = csv_file.read()

with open('/var/lib/neo4j/import/MRCONSO.csv', "w+", encoding="utf-8") as csv_file:
    csv_file.write(content.replace('"', ''))

答案 1 :(得分:0)

您可以使用熊猫:

import pandas

df = pandas.read_csv('file.csv',header=None)
df.replace('"', '', inplace=True, regex=True)
df.to_csv("file.csv",header=False, index=False)

答案 2 :(得分:0)

当使用引号$getEvents = Booking::where('category_id', '=', $categoryID) ->where('date_from', '!=', $startDate) ->where('date_to', '!=', $endDate) ->orWhere('date_from', '<', $startDate) ->orWhere('date_to', '>', $endDate) ->whereNotBetween('date_from', [$startDate,$endDate]) ->whereNotBetween('date_to', [$startDate,$endDate]) ->get(); 作为字符串时,您必须在其之前传递反斜杠或将其声明为文字,否则python会将您的输入视为声明字符串的语法:

"

df.replace('\"', '', inplace = True, regex = True)