如何从python中的列表中的字符串中删除双引号?

时间:2014-06-09 15:37:59

标签: python string list dictionary

我正在尝试在字典列表中获取一些数据。 数据来自csv文件,所以它都是字符串。 文件中的键都有双qoutes,但由于这些都是字符串,我想删除它们,所以它们在字典中看起来像这样:

{'key':value}

而不是

{'"key"':value}

我尝试使用string = string [1:-1],但这不起作用...

这是我的代码:

csvDelimiter = ","
tsvDelimiter = "\t"
dataOutput = []

dataFile = open("browser-ww-monthly-201305-201405.csv","r")

for line in dataFile:
    line = line[:-1]    # Removes \n after every line

    data = line.split(csvDelimiter)

    for i in data:
        if type(i) == str:    # Doesn't work, I also tried if isinstance(i, str)
                              # but that didn't work either.
            print i
            i = i[1:-1]
            print i
    dataOutput.append({data[0] : data[1]})

dataFile.close()

print "Data output:\n"
print dataOutput

我从print获得的所有打印件都很好,没有双引号,但是当我将数据附加到dataOutput时,引号又回来了!

知道如何让它们永远消失吗?

3 个答案:

答案 0 :(得分:4)

剥去它。例如:

data[0].strip('"')

但是,在阅读cvs文件时,最好使用内置的cvs模块。它会照顾你。

答案 1 :(得分:1)

正如评论中所述,在处理CSV文件时,你真的应该使用Python的内置csv module(链接到Python 2文档,因为它似乎就是你正在使用的)。

另外需要注意的是,当你这样做时:

data = line.split(csvDelimiter)

返回列表中的每个项目,如果它不为空,则为字符串。在循环中进行类型检查是没有意义的(尽管有理由你会使用isinstance)。我不知道它有什么“不起作用”,尽管你可能使用的是unicode字符串。在Python 2上,您通常可以使用isinstance(..., basestring),其中basestringstrunicode的基类。在Python 3上,只需使用str,除非您知道自己正在处理bytes

答案 2 :(得分:1)

你说:“我只是尝试使用string = string [1:-1],但这不起作用......”。它似乎对我很好:

In [101]: s="'word'"
In [102]: s[1:-1]
Out[102]: 'word'