如何使用pythoncsv库将每行提取为2个值,而不管它具有多少个值

ogq8wdun  于 2023-03-10  发布在  Python
关注(0)|答案(1)|浏览(130)

我有一个csv文件,前2个条目像这样:

"objectId","url"
"1","someUrl1"
"2","[\"SomeUrl2\",\"SomeUrl3\"]"

我想在python中读取csv,这样我就可以提取id和url,因为它必须是一个单独的变量,而不管它是字符串还是字符串数组。每一行都将有一个id。url可以是一个,如上所示。

  • 对于1:Id,我需要:1.我需要的网址:“某些URL 1”
  • 对于2:Id,我需要:2.我需要的网址:“[“某些URL 2”,“某些URL 3”]”

我试着像往常一样阅读csv。

def loadList(fileName):
inpFile = open(fileName, "r")
li = list()

with inpFile:
    csvreader = csv.reader(inpFile)
    for row in csvreader:
        print(row,"\n")
        # line = row.strip()
        li.append(row)

inpFile.close()
return li

但这界定了所有逗号,这不是我需要的

edqdpe6u

edqdpe6u1#

在csv模块中,默认转义字符为None,这意味着在输入和输出时都不处理使用反斜杠字符的转义。您必须显式地设置它:

# escape chars are doubled here because one is eaten by the interpretor
t = '''"objectId","url"
"1","someUrl1"
"2","[\\"SomeUrl2\\",\\"SomeUrl3\\"]"
'''
with io.StringIO(t, newline='') as fd:
    rd = csv.reader(fd, delimiter=',', escapechar='\\')
    for row in rd:
        print(row)

按预期给出:

['objectId', 'url']
['1', 'someUrl1']
['2', '["SomeUrl2","SomeUrl3"]']

但是要注意:对于第二行,URL不是列表,而是列表的字符串表示......

相关问题