我在python中有以下功能:
def writeWinningBoards():
f = open("goodBoards.txt", "a")
for row in tableros:
for index, value in enumerate(row):
if value == 1:
row[index] = 'x'
elif value == 2:
row[index] = ' '
elif value == 3:
row[index] = 'o'
row = np.array(row).reshape(3,3)
f.write(row)
print row
f.close()
如何写入文件,数组的控制台表示,打印行时我有这个:
['o' 'o' 'x']
['x' 'x' 'x']
['o' 'x' 'o']
但是在文件中我得到了这样的东西:
x o x o x x o xo o x
我怎么能这样做?我只想要一种用户友好的方式来存储tic tac toe gameboard以供阅读。
答案 0 :(得分:1)
我建议的方法很多:
row_reshaped = np.array(row).reshape(3,3)
row_reshaped_as_base_array = row_reshaped.tolist()
row_reshaped_as_json = json.dumps(row_reshaped_as_base_array
with open("goodBoards.txt", "a") as f:
f.write(row_reshaped_as_json)
我不进行方法链接,并且发现列表理解对我来说有点过于简洁。
答案 1 :(得分:0)
这是一个选项:
import numpy as np
import pandas as pd
a = np.array([["x", "o"], ["o", "x"]])
df = pd.DataFrame(a)
df.to_csv("my_file.txt", header=False, index=False, sep=" ")
结果:
$ cat my_file.txt
x o
o x
答案 2 :(得分:0)
f.write(row)
和print row
之间的区别不仅仅是写入文件而另一个写入屏幕。在python中,print
语句将在每次调用后附加换行符,而打开文件对象上的write
语句则不会。{/ p>