在python

时间:2019-02-28 08:56:04

标签: python strip

我的目标是读取一个csv文件,然后打印10个项目,并且它们之间只有一个空格。以下是要执行的任务:

  1. 如果该字符串包含多个单词,请在其周围加上“双引号”。

我面临的问题是,如果它是单个字符串,但末尾有空格,则应该删除它。

我在python中尝试了strip和rstrip,但似乎不起作用。

以下是它的代码:

with open(accidents_csv, mode='r', encoding="utf-8") as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=",")
    count = 0
    for row in csv_reader:
        if count <=10:
            new_row = [beautify_columns(item) for item in row]
            print(' '.join(new_row))
            count +=1
def beautify_columns(col):
    col.strip()
    if(' ' in col):
        col = f'"{col}"'
    return col

下图显示了代码的当前行为,但没有删除尾随空格。 The image shows the current behavior of the code without removing the trailing spaces.

请告诉我如何删除字符串末尾的空格

2 个答案:

答案 0 :(得分:3)

您必须分配strip()的结果,即

col = col.strip()

仅需注意的另一件事是strip()将在字符串的开头和结尾删除空格(即不只是空格字符)。

答案 1 :(得分:0)

部分不相关,但是csv.writer可以满足您的其他要求,因为它会自动引用包含分隔符的字段:

with open(accidents_csv, mode='r', encoding="utf-8") as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=",")
    csv_writer = csv.writer(sys.stdout, delimiter=" ")
    for count, row in enumerate(csv_reader):
        new_row = [item.strip() for item in row]
        csv_writer.writerow(new_row)
        if count >= 9: break

如@barny所述,strip()将删除所有空格字符,包括"\r""\t"。如果您只想删除空格字符,请使用strip(' ')