Python 字符串剥离后不需要的空行

Python unwanted empty lines after string strip

我有一个 csv

"AA","AB","AC"
"BA","BB","BC"
"CA","CB","CC"

删除字符串后说“csv 格式更改为

AA,AB,AC

BA,BB,BC

CA,CB,CB

我应该怎么做才能避免不需要的线条?

 import fileinput
 for line in fileinput.FileInput("test.csv",inplace=1):
    line = line.replace('"','')
    print (line)

看起来你正在打印它,看起来像 Python 3,并且你的文件内容看起来已经包含必要的换行符。因此,您需要告诉 print() 函数不要添加自己的换行符:

print(line, end='')

你为什么要这样做?您应该使用 csv 模块,它会为您处理 , 和引号。例子-

import csv
with fileinput.FileInput('test.csv',inplace=1) as f:
    reader = csv.reader(f)
    for row in reader:
        print (','.join(row))

Example/Demo -

>>> import csv
>>> with fileinput.FileInput('test.csv',inplace=1) as f:
...     reader = csv.reader(f)
...     for row in reader:
...         print(','.join(row))
...
AA,AB,AC
BA,BB,BC
CA,CB,CC

您看到了额外的行,因为从文件中读取的行以“\n”结尾并且 print(line) 语句附加了一个额外的换行符。

您可以使用 rstrip() 去除尾随的换行符:

 import fileinput
 for line in fileinput.FileInput("test.csv",inplace=1):
    line = line.rstrip().replace('"','')
    print (line)

读取时每一行都包含终止换行符。此外 print() 还将添加自己的新行,因此您最终会得到两个新行。

但是您没有按照问题标题的建议使用 strip()

要解决这个问题,您可以使用 rstrip() 删除每行末尾的任何空格:

import fileinput
for line in fileinput.FileInput("test.csv",inplace=1):
    line = line.replace('"','').rstrip()
    print (line)

这将删除额外的换行符,但请注意,它还会删除行尾的其他空格。

另一种方法是防止 print() 添加自己的新行:

Python 2:

print(line),    # comma prevents new line

Python 3:

print(line, end='')