Line.strip()在python中不起作用?

时间:2018-08-16 06:27:38

标签: python

我尝试删除文件中的空白行;但这并没有消除我的空白行。

def removeWhiteSpaceLine():
    fp = open("singleDataFile.csv")
    for i, line in enumerate(fp, 1):
        if i == 2:
            line.strip()
    fp.close()

我的示例文件如下:(我要删除第二行,即空白)

Name,Address,Age

John,Melbourne,28
Kati,Brisbane,35
.....

3 个答案:

答案 0 :(得分:2)

line.strip()不会修改line,而是返回一个新字符串。

仅在其行上调用line.strip()无效。您必须将结果重新分配给变量:

line = line.strip()

但是,看来您无论如何都不应该使用strip

  

strip()

     

返回已删除前导和尾随字符的字符串副本。

对我来说,您不清楚要问什么:

1)fp = open("singleDataFile.csv")以只读模式打开文件。如果您希望更新文件,那将不起作用。如果要修改文件,请以写入模式(“ w”或“ r +”)打开它。

2)也许您不想修改文件,而只忽略第二行?在这种情况下,您应该将所有行添加到列表中,而忽略第二行。

with open("singleDataFile.csv", "r+") as f:
    content = f.readlines() # read content
    f.seek(0) # go back to the begin of the file
    for i, line in enumerate(content):
        if i != 1: # the condition could also be if line.strip()
            f.write(line) # write all lines except second line
    f.truncate() # end of file

答案 1 :(得分:0)

尝试使用熊猫库。

pd.colname.str.strip()

答案 2 :(得分:0)

尝试这样,这里修改相同的文件,就像将相同的内容重写为相同的文件(空行除外)一样

with open("singleDataFile.csv","r") as f:
    lines=f.readlines()

with open("singleDataFile.csv","w") as f:  
    for line in lines:
        if line.strip():
           f.write(line)