2015-11-14 3 views
0

J'ai la fonction suivante en python:Comment écrire numpy.array() sortie littéralement fichier texte

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() 

Comment un j'écrire dans un fichier, la représentation de la console du tableau, lorsque la ligne est J'ai imprimé ceci:

['o' 'o' 'x'] 
['x' 'x' 'x'] 
['o' 'x' 'o'] 

mais dans le fichier que je reçois quelque chose comme ceci:

x o x  o x  x o  xo o x 

Comment pourrais-je faire cela? Je veux juste une façon conviviale de stocker des tables de jeu tactique pour lire.

Répondre

1

De nombreuses façons, celui que je vous suggère est:

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) 

Je ne fais pas de méthodes enchaînées et trouver la liste compréhensions un peu trop laconique pour moi.

0

Voici une option:

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=" ") 

Résultat:

$ cat my_file.txt 
x o 
o x 
0

La différence entre f.write(row) et print row est pas seulement que l'on écrit dans un fichier et l'autre écrit à l'écran. En python, l'instruction print ajoutera une nouvelle ligne après chaque appel, tandis que la méthode write sur un objet fichier ouvert ne le fera pas.

+0

Ceci n'est pas une réponse. –