如何逗号分隔的csv但不是所有单元格

How to comma seprate csv but not all cells

这个问题不是同一个问题的重复,但符合某些特征。我的问题是我也想将几个单元格转换为列表,但在那个问题中没有提到

我正在读取一个数据结构如下所示的 csv 文件

数据为文本:

11916,testBuild,Test Building,Udaipur sector-5 Hiran Magri,181,753180   794950,"1,2",UC,2018-08-22,"2BHK, 3BHK"

这是我的没有 header

的 csv 列

我正在尝试阅读它并将其转换为逗号分隔列表,以便我可以单独访问每个元素

下面是我的代码:

def Residential():
    global url, parse_url
    filename = "Residential.csv"
    f = open(filename, "r")
    for line in f.readlines():
        data = line.split(",")
        builderid = data[0]
        print(builderid)
        buildername = data[1]
        print(buildername)
        buildingname = data[2]
        print(buildername)
        address = data[3]
        city = data[4]
        locality = data[5]
        building_id = data[6]
        apartment = data[7].replace("\"","")
        print(type(apartment))
        status = data[8].replace("\"","")
        print(status)
        cdate = data[9]
        bhk = data[10]
        rnumber = data[11]
        rurl = data[12]
        print(data)
Residential()

元素 7 和 10 是 属性 类型,bhk 也被 "," 分隔,我怎么能不用逗号分隔它们并将元素 7 读入列表和元素 10 中呢?

喜欢这个我想看

['11916', 'testBuild', 'Test Building', 'Udaipur sector-5 Hiran Magri', 
'181', '753180', '794950', **[1,2]**, 'UC', '2018-08-22', **"2BHK, 3BHK"**,
'', '\n']

这是我收到的结果:

['11916', 'testBuild', 'Test Building', 'Udaipur sector-5 Hiran
Magri', '181', '753180', '794950', '"1', '2"', 'UC', '2018-08-22',
'"2BHK', ' 3BHK"', '', '\n']

您只需要使用 json 模块。

import json
s = '1,"2,3","123,234"' # one line of your csv for example
s = '[{}]'.format(s)
data = json.loads(s) # data is a list now
print data

Python 中有一个 CSV 解析器,可以正确处理包含逗号的引用字符串:

(假设 filename.csv 仅包含一行,正如您在问题中发布的那样)

import csv
with open('filename.csv') as f:
  reader = csv.reader(f)
  for row in reader:
    row[6] = list(map(int, row[6].split(",")))
    print(row)

给出结果

['11916', 'testBuild', 'Test Building', 'Udaipur sector-5 Hiran Magri', '181', '753180 794950', [1,2], 'UC', '2018-08-22', '2BHK, 3BHK']