代码之家  ›  专栏  ›  技术社区  ›  İlkem Çetinkaya

读取csv文件时在循环中使用python rstrip

  •  1
  • İlkem Çetinkaya  · 技术社区  · 8 年前

    我有一个CSV文件,我在其中循环并匹配我的数据库,以便根据这些匹配获得结果。

    在文本末尾有空格的情况下,我遇到了一个问题。所以我做了研究,发现我需要添加 rstrip 函数删除文本末尾的空格。

    这是我的代码:

    with open(path, encoding='utf-8') as f:
        data = csv.reader(f, delimiter='|')
        for row in data:
            line = row[0]
            cleanline = line.rstrip()
            lines.append(cleanline)
            query = line
    

    代码不起作用。我也试过像这样的字符串 /s strip ,并替换功能,但什么都不起作用。原因是什么?我做错了什么?

    结尾有空格的CSV文件:

    Sistem en az 23.8  inç boyutlarında olmalıdır. 
    1 adet HDMI port olmalıdır. 
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Martin Evans    8 年前

    您可以尝试以下方法:

    import csv
    
    path = 'input.csv'
    lines = []
    
    with open(path, newline='', encoding='utf-8') as f:
        data = csv.reader(f, delimiter='|', skipinitialspace=True)
    
        for row in data:
            lines.append([c.strip() for c in row])
    
    print(lines)        
    

    这将使用 strip() 命令根据您的数据,添加额外的 skipinitialspace=True 参数但这不会删除下一个分隔符之前的尾随空格。 newline='' 也应在Python 3中使用。x与a一起使用时 csv.reader()


    您提供的文件只包含几行文本,因此您可以按如下方式读取:

    lines = []
    
    with open('input.csv', encoding='utf-8') as f_input:
        for line in f_input:
            lines.append(line.strip())
    
    print(lines)
    

    这会给你 lines 包含:

    ['Sistem en az 23.8  inç boyutlarında olmalıdır.', '1 adet HDMI port olmalıdır.']