从CSV文件中删除空格

BAI*_*BAI 25 python csv data-munging

我需要从我读过的CSV文件中划分空格

import csv

aList=[]
with open(self.filename, 'r') as f:
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
    for row in reader:
        aList.append(row)
    # I need to strip the extra white space from each string in the row
    return(aList)
Run Code Online (Sandbox Code Playgroud)

小智 34

还有嵌入式格式参数:skipinitialspace(默认为false) http://docs.python.org/2/library/csv.html#csv-fmt-params

aList=[]
with open(self.filename, 'r') as f:
    reader = csv.reader(f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE)
    for row in reader:
        aList.append(row)
    return(aList)
Run Code Online (Sandbox Code Playgroud)

  • 不删除尾随空格?为什么没有这个选项??? (5认同)
  • 要分隔空格:`reader = csv.reader(f,skipinitialspace = True,delimiter =',',quoting = csv.QUOTE_NONE)`,对吗? (2认同)

Civ*_*Fan 10

在我的情况下,我只关心在使用时从字段名称(也就是列标题,也就是字典键)中删除空格csv.DictReader.

创建一个基于的类csv.DictReader,并覆盖该fieldnames属性以从每个字段名称中删除空白(也就是列标题,也就是字典键).

通过获取常规的字段名列表,然后在创建新列表时迭代它,并从每个字段名称中删除空白,并将基础_fieldnames属性设置为此新列表.

import csv

class DictReaderStrip(csv.DictReader):
    @property                                    
    def fieldnames(self):
        if self._fieldnames is None:
            # Initialize self._fieldnames
            # Note: DictReader is an old-style class, so can't use super()
            csv.DictReader.fieldnames.fget(self)
            if self._fieldnames is not None:
                self._fieldnames = [name.strip() for name in self._fieldnames]
        return self._fieldnames
Run Code Online (Sandbox Code Playgroud)

  • 如果您的空格仅位于字段名称(如“'date'”而不是“'date'`”或“'date'`)的左侧,请使用[`csv.DictReader(csvfile,skipinitialspace = True)`](https:/ /docs.python.org/3/library/csv.html#csv.Dialect.skipinitialspace)也可以正常运行。 (2认同)

mgi*_*son 7

with open(self.filename, 'r') as f:
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
    return [[x.strip() for x in row] for row in reader]
Run Code Online (Sandbox Code Playgroud)

  • @CivFan 生成一个生成器会更好,尤其是对于大文件:`for row in reader: yield (c.strip() for c in row)` (2认同)

sap*_*api 4

你可以做:

aList.append([element.strip() for element in row])
Run Code Online (Sandbox Code Playgroud)