我是否正在尝试将数组中的元素添加到JSON文件中我希望将数组的每个元素放在他们自己的行上我目前有这个
while i < num:
name1= tweet_list[i]
name1 = re.sub(r'(https|http)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b|\n|@', '', name1, flags=re.MULTILINE)
print name1
judge = input("1 pos, 2 neg, 3 skip: ")
if judge == 1:
pos_name.append(name1)
elif judge == 2:
neg_name.append(name1)
i += 1
with open("pos_names.json", "a") as p:
json.dump(pos_name, p)
with open("neg_names.json", "a") as n:
json.dump(neg_name,n)
此代码将所有元素放在1行,但由于某种原因,文件中前面总是有空元素[]
答案 0 :(得分:0)
这种情况正在发生,因为您正在以附加模式打开输出文件("a"
标志为第二个参数open
),这意味着写入文件的任何内容都将追加< / em>到当前内容;并且您将列表转储到while
循环的每次迭代中的文件。 (这也是前面有空列表的原因 - 在前几次迭代期间pos_name
和/或neg_name
可能仍然是一个空列表。尝试以写入模式"w"
打开文件,然后在循环结束后写入json dump 。像这样:
while i < num:
# etc. what you had before
# this after the loop
with open("pos_names.json", "w") as p:
json.dump(pos_name, p)
with open("neg_names.json", "w") as n:
json.dump(neg_name,n)
请注意,这仍会在一行中输出所有内容 - 您可以使用indent
kwarg到json.dump
来打印它,如果这是您想要的。 (有关用法示例,请参阅python docs。)以下示例(ipython session - json.dumps输出到stdout而不是文件):
In [8]: import json
In [9]: print(json.dumps(['one', 'two', 'three']))
["one", "two", "three"]
In [10]: print(json.dumps(['one', 'two', 'three'], indent=2))
[
"one",
"two",
"three"
]