Home > Software design >  How to remove some extra tuples and lists and print some extra stuff between the strings in python?
How to remove some extra tuples and lists and print some extra stuff between the strings in python?

Time:12-03

 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)

The output for the above code is

I do have a string format like

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

How to write a python code which prints the above format similar to below one:

[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'

Can anyone help me with this?

CodePudding user response:

I think I'll contribute with this one-liner solution.

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

Which produces the exact same format as the asker's desire:

[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'

CodePudding user response:

If I understood correctly:

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

Output:

[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
##################

CodePudding user response:

Another solution

from itertools import chain

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

Output:

[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'
##################
  • Related