Как удалить некоторые дополнительные кортежи и списки и напечатать некоторые дополнительные элементы между строками в python?

#python #python-3.x #string #list #tuples

#питон #python-3.x #строка #Список #кортежи

Вопрос:

 bounds = reader.readtext(np.array(images[0]), min_size=0,slope_ths=0.2, ycenter_ths=0.7, height_ths=0.6,width_ths=0.8,decoder='beamsearch',beamWidth=10)   print(bounds)  

Выходные данные для приведенного выше кода являются

У меня есть строковый формат, такой как

 [([[1004, 128], [1209, 128], [1209, 200], [1004, 200]],  'EC~L',  0.18826377391815186),  ([[177, 179], [349, 179], [349, 241], [177, 241]], 'OKI', 0.9966741294455473),  ([[180, 236], [422, 236], [422, 268], [180, 268]],  'Oki Eleclric Industry Co',  0.8091106257361781),  ([[435, 243], [469, 243], [469, 263], [435, 263]], 'Ltd', 0.9978489622393302),  ([[180, 265], [668, 265], [668, 293], [180, 293]],  '4-11-22 , Shibaura, Minalo-ku, Tokyo 108-855| Japan',  0.6109240973537998),  ([[180, 291], [380, 291], [380, 318], [180, 318]],  'Tel  81-3-5440-4884',  0.9406430290171053)]  

Как написать код на python, который печатает приведенный выше формат, аналогичный приведенному ниже:

 [1004, 128, 1209, 128, 1209, 200, 1004, 200],  'EC~L' ################## [177, 179, 349, 179, 349, 241, 177, 241], 'OKI' ################## [180, 236, 422, 236, 422, 268, 180, 268], 'Oki Eleclric Industry Co' ################## [435, 243, 469, 243, 469, 263, 435, 263],  'Ltd' ################## [180, 265, 668, 265, 668, 293, 180, 293], '4-11-22 , Shibaura, Minalo-ku, Tokyo 108-855| Japan' ################## [180, 291, 380, 291, 380, 318, 180, 318], 'Tel  81-3-5440-4884'  

Кто-нибудь может мне в этом помочь?

Ответ №1:

Я думаю, что внесу свой вклад в это однострочное решение.

 print("n##################n".join(("{},n'{}'".format([x for item in items[0] for x in item], items[1])) for items in bounds))  

Который создает точно такой же формат, как и желание спрашивающего:

 [1004, 128, 1209, 128, 1209, 200, 1004, 200], 'EC~L' ################## [177, 179, 349, 179, 349, 241, 177, 241], 'OKI' ################## [180, 236, 422, 236, 422, 268, 180, 268], 'Oki Eleclric Industry Co' ################## [435, 243, 469, 243, 469, 263, 435, 263], 'Ltd' ################## [180, 265, 668, 265, 668, 293, 180, 293], '4-11-22 , Shibaura, Minalo-ku, Tokyo 108-855| Japan' ################## [180, 291, 380, 291, 380, 318, 180, 318], 'Tel  81-3-5440-4884'  

Ответ №2:

Если я правильно понял:

 for l, s, _ in bounds:  print([lll for ll in l for lll in ll])  print(s)  print('##################')   

Выход:

 [1004, 128, 1209, 128, 1209, 200, 1004, 200] EC~L ################## [177, 179, 349, 179, 349, 241, 177, 241] OKI ################## [180, 236, 422, 236, 422, 268, 180, 268] Oki Eleclric Industry Co ################## [435, 243, 469, 243, 469, 263, 435, 263] Ltd ################## [180, 265, 668, 265, 668, 293, 180, 293] 4-11-22 , Shibaura, Minalo-ku, Tokyo 108-855| Japan ################## [180, 291, 380, 291, 380, 318, 180, 318] Tel  81-3-5440-4884 ##################  

Ответ №3:

Другое решение

 from itertools import chain  for numbers, description, _ in bounds:  numbers = list(chain(*numbers))  print(f"{numbers},n"  f"'{description}'n"  "##################")  

Выход:

 [1004, 128, 1209, 128, 1209, 200, 1004, 200], 'EC~L' ################## [177, 179, 349, 179, 349, 241, 177, 241], 'OKI' ################## [180, 236, 422, 236, 422, 268, 180, 268], 'Oki Eleclric Industry Co' ################## [435, 243, 469, 243, 469, 263, 435, 263], 'Ltd' ################## [180, 265, 668, 265, 668, 293, 180, 293], '4-11-22 , Shibaura, Minalo-ku, Tokyo 108-855| Japan' ################## [180, 291, 380, 291, 380, 318, 180, 318], 'Tel  81-3-5440-4884' ##################