亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何限制每個循環在python中將多個帶引號的字符串作為單個字符串讀?。?/h1>

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"""
查看完整描述

2 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

我認為該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"2222

3333, 33, 33

444


查看完整回答
反對 回復 2021-09-14
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

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] = '"' + e



for e in res:

  print (e)


# "1111""

# "2222"2222"

# "3333, 33, 33"

# "444"

# ""

但我不知道它是否適用于文件的所有行。



查看完整回答
反對 回復 2021-09-14
  • 2 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號