как избавиться от цитаты буитина в массиве и сохранить в файл - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть двумерный массив, подобный этому:

  [["x","0xacc2d9"],
  ["y","0x56ae57"]]

Я хочу сохранить этот массив так, чтобы он содержал двумерный массив. первый элемент с цитатой, второй элемент без цитаты.

Таким образом, результат, сохраненный в файле, должен быть:

 [["x",0xacc2d9],
  ["y",0x56ae57]]

Я пробовал разные способы, но так как цитата не является чем-то дополнительным и является буитином, я не могу его удалить. Я пытался.

lst. replace(""",")

Также этот:

filename= 'test.txt'
 with open(filename, 'w') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerows(lst)

Но он удаляет [], "", и я не хочу их удалять.

Спасибо за помощь.

Edit2 По какой-то причине мне нужно, чтобы мой вывод имел двойные кавычки , , а не одинарные кавычки , поэтому на выходе должно быть: какой x имеет double quotation

   [["x",0xacc2d9],
      ["y",0x56ae57]]

1 Ответ

2 голосов
/ 01 апреля 2019

Не идеально, но дает вам что-то, с чем можно поиграть:

In [883]: lst =  [["x","0xacc2d9"], 
     ...:   ["y","0x56ae57"]]  
In [885]: with open('test.txt','w') as f: 
     ...:     f.write('[') 
     ...:     for row in lst: 
     ...:         f.write('[%r, %s]\n'%tuple(row)) 
     ...:     f.write(']\n') 
     ...:                                                                       
In [886]: cat test.txt                                                          
[['x', 0xacc2d9]
['y', 0x56ae57]
]

Как вы планируете использовать этот файл?

И для более чистой обработки выходных скобок (и замена цитаты):

In [887]: astr = '\n'.join(['[%r, %s]'%tuple(row) for row in lst])              
In [888]: astr                                                                  
Out[888]: "['x', 0xacc2d9]\n['y', 0x56ae57]"
In [895]: astr = astr.replace("'",'"')                                          
In [896]: astr                                                                  
Out[896]: '["x", 0xacc2d9]\n["y", 0x56ae57]'
In [897]: with open('test.txt','w') as f: 
     ...:     print('[%s]'%astr, file=f) 
     ...:                                                                       
In [898]: cat test.txt                                                          
[["x", 0xacc2d9]
["y", 0x56ae57]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...