как избавиться от исходной цитаты в массиве и сохранить в файл

#python #file

#python #файл

Вопрос:

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

   [["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. Вы не выводите данные CSV; не используйте csv.writer .

2. @chepner спасибо за ответ. но я пробовал разные способы, но не смог получить желаемый результат. не могли бы вы, пожалуйста, поделиться со мной своей идеей, как я могу это решить?

Ответ №1:

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

 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]
]
  

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

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

 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]]
  

Комментарии:

1. Большое вам спасибо @hpaulj . извините за неясность, по какой-то причине я хочу, чтобы в результате были только двойные кавычки. итак, x будет «x», а не «x», не могли бы вы, пожалуйста, дать мне знать, если у вас есть какие-либо идеи по исправлению этого?

2. Это для конкретного использования в другой области, вот почему я должен подготовить правильное форматирование. У вас есть какие-либо идеи, как мы можем получить первый элемент с двойными кавычками?

3. Я добавил альтернативу с заменой кавычек. Также может существовать способ управления выбором кавычек в любом из % механизмов .format форматирования. Для этого нам пришлось бы покопаться. Python использует две версии взаимозаменяемо.

4. Большое вам спасибо. Я использовал replace для замены «на», но это не сработало !!. еще раз большое спасибо. вы очень помогли 🙂