如何限制每个循环在python中将多个带引号的字符串作为单个字符串读取?

CSV 文件包含以下数据,


"1111"","2222"2222","3333, 33, 33","444",""


读取此数据的csv阅读器,


['"1111""'、'"2222"2222"'、'"3333'、'33'、'33"'、'"444"'、'""']


当我尝试将此读取器对象转换为列表并尝试使用每个循环对其进行迭代时,循环将“3333、33、33”视为三个不同的值。我的要求是将其作为单个字符串读取。


代码:


reader = csv.reader(csv_file, delimiter=',',  quotechar="'", escapechar = "'")

       for row in reader:

           colValues = list(row)

           print(colValues)

           for each in colValues:

               print(each)

电流输出:


"1111""

"2222"2222"

"3333

 33

 33"

"444"

""

期望输出:


"1111""

"2222"2222"

"3333, 33, 33"

"444"

""


胡说叔叔
浏览 245回答 2
2回答

眼眸繁星

我认为该csv模块无法处理这种不规则格式。您可以根据","哪个将获得正确的列进行拆分。您还需要去除第一个和最后一个引号。>>> row = '"1111"","2222"2222","3333, 33, 33","444",""'>>> row = row[1:-1]>>> print(row)1111"","2222"2222","3333, 33, 33","444",">>> row.split('","')['1111"', '2222"2222', '3333, 33, 33', '444', '']共:with open(csv_file) as lines:    for line in lines:        line = line.rstrip()  # need to get rid of newline        for element in line[1:-1].split('","'):            print(element)输出:1111"2222"22223333, 33, 33444

慕码人2483693

csv给定输入字符串,没有库的解决方法:input = '"1111"","2222"2222","3333, 33, 33","444",""'这是返回所需的输出:res = input.split(",\"")for i, e in enumerate(res):  if len(e) > 1 and e[0] != '"' or len(e) == 1:    res[i] = '"' + efor e in res:  print (e)# "1111""# "2222"2222"# "3333, 33, 33"# "444"# ""但我不知道它是否适用于文件的所有行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python