[英]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.