繁体   English   中英

在python文件中插入奇怪的换行符

[英]strange newlines being inserted in python file write

有谁知道或知道python奇怪地插入换行符的任何情况。

这是我的代码

  if ((sentAnalyze) and len(OpString)!=0):
    if data[8]!= '':
        if (data[8] == 'p'):
            OpString = "1 " + OpString
        elif (data[8] == 'n'):
            OpString = "-1 " + OpString
        elif (data[8] == 'neu'):
            OpString = "0 " + OpString
        print "writing :", OpString
        fw.write(OpString + "\n")

当我尝试查看打印命令和文件写入命令时,对于某些行号,在文件中插入了一条额外的新行。

这整个if块处于while循环中,并且print命令可以正确打印行。

是的,我以w+模式打开文件。

计算OpString的函数(部分写在这里)

 for word,tag in simplified_tokens:
                tok = word + "/" + tag
                if tok in self.wordtoPosition:
                    OpString = OpString+ " " + str(self.wordtoPosition[tok]) + ":1" #+ str(1.0 / self.uniqPOSHash[tok])
return OpString

数据看起来像

1981:1 503:1 21:1 58:1 159:1 1:1 87:1 412:1 105:1 478:1 1154:1 1023:1 1192:1 53:1 37:1 36:1 598:1 19:1 4:1 162:1 14:1 131:1 2:1 489:1 411:1 3:1 165:1 370:1


-17:1 614:1 6:1 631:1 59:1 1:1 0:1 1183:1 10:1 22:1 15:1 67:1 55:1 3:1 175:1 9:1 43:1 866:1 48:1 30:1 0:1 484:1 2:1 1106:1 109:1

注意之间的多余换行符。 仅发生在某些地方。

repr(OpString)显示

'1981:1 503:1 21:1 58:1 159:1 1:1 87:1 412:1 105:1 478:1 1154:1 1023:1 1192:1 53:1 37:1 36:1 598:1 19:1 4:1 162:1 14:1 131:1 2:1 489:1 411:1 3:1 165:1 370:1'
'-17:1 614:1 6:1 631:1 59:1 1:1 0:1 1183:1 10:1 22:1 15:1 67:1 55:1 3:1 175:1 9:1 43:1 866:1 48:1 30:1 0:1 484:1 2:1 1106:1 109:1'

注意。 当我将某些行写入文件时,删除“ \\ n”仍会添加一行。 太奇怪了

另一个有趣的观察。 在以上方法中,我正在从文件读取并写入另一个文件。 所以我有2个文件句柄打开。 fr用于读取文件,fw用于写入文件。 如果我只有fr打开,则构建整个OpString变量,关闭fr,然后使用fw编写它,我不会得到奇怪的新行。 很有意思!

同时,我们真的必须查看您正在使用的输入数据。

fw.write(Opstring.strip() + '\n')

strip()将从原始数据中删除所有可能出现的繁琐换行,然后再为write显式附加一个。

我怀疑至少您的某些OpString已经有尾随换行符了。

这不是修复 ,而是诊断 一旦确定这是问题的根源,那么更好的方法将是消除原始/当您阅读它们时出现的换行。

更新

更好的是,做一个

 Opstring = Opstring.strip()

在按照@kindall的有用注释输入if -statement之前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM