gpt4 book ai didi

python - 写入和打印产生不同的结果

转载 作者:行者123 更新时间:2023-11-30 23:23:43 25 4
gpt4 key购买 nike

我正在尝试解析 JSON 文件并将字段的第一级值获取到不同的文件中。

我目前拥有的代码是:

outfile = open('test.json','w')
with open('sample.json') as data:
for line in data:
j = json.loads(line)
d = j["text"].encode('utf8')
outfile.write( d )
# print d
data.close()
outfile.close()

sample.json 文件有 10000 行,每行至少有一个不同级别的“文本”字段。我只想要第一级“文本”字段。奇怪的是,当我使用 outfile.write( d ) 时,我的 test.json 文件中有 545 行,其中一些是空行,但是当我使用print d 我得到 10544 行,其中没有一行是空白的。

谁能解释一下这是怎么回事吗?

最佳答案

我相信您看到的差异可能是由于 print 在其输出中附加换行符而 File.write() 没有附加换行符造成的。改变

outfile.write( d )

outfile.write( "%s\n" % d )

或者

outfile.write( d + "\n" )

行数应该匹配。

至于空行...没有看到您的文字,我只能推测,但这里是:

鉴于 File.write() 不添加新行,并且您得到的行有 545 行,d 必须包含 544 "\n " 字符。如果这些换行符落在字符串的末尾(我认为是这样),那么您最终会得到如下结果:

>>> d = "foobar\n"
>>> print d
foobar

>>>

这就是你的空行的原因。当然,您还可以通过 print 将 "\n" 附加到字符串中。所以 10000 行 == 10000 换行加上我假设已经在字符串中的 544 行新行..

>>> 10000 + 544
10544

现在对于文件中的 545 行.. 因此,如果字符串中没有新行,我们预计只有一行文本。 544 "\n" 加上我们从 (1) 开始的行

>>> 544 + 1
545

编辑:

如果您想复制 print 输出,Pythonic 方法是在 open() 时使用 'a' 标志像这样的文件:

outfile = open('test.json','a')

如果你想转义换行符,你应该使用:

d = d.replace("\n", "\\n")
d = d.replace("\r", "\\r") # for Windows \r characters

d 输出或写入文件之前

关于python - 写入和打印产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com