0

Suppose that you have a list of strings like the following one:

the_list = ['02:00', '  GBP', '', 'Construction Output (MoM) (Jan)', '1.1%', '0.5%', '2.0%', '',
            '02:00', '  GBP', '', 'U.K. Construction Output (YoY) (Jan)', '9.9%', '9.2%', '7.4%', '',
            '02:00', '  GBP', '', 'GDP (MoM)', '0.8%', '0.2%', '-0.2%', '',
            '02:00', '  GBP', '', 'GDP (YoY)', '10.0%', '9.3%', '6.0%', '',
            '02:00', '  GBP', '', 'Index of Services', '1.0%', ' ', '1.2%', '']

Which every 8 elements appears '', which is an empty string, and it happens to be the same empty string that exists next to the one called GBP

How could the_list variable be updated so that it deletes the '' element that appears every 8 elements in the array of strings?

NoahVerner
  • 937
  • 2
  • 9
  • 24
  • I just would like to know how can I delete the elements that are empty strings `''` except those that are next to the elements set as ` GBP` @OrkhanAliyev – NoahVerner Mar 12 '22 at 00:33
  • 2
    One thing to note: it looks like you have gathered multiple rows of data into a single list. You should consider building this as a 2D list or a list of dictionaries or class objects to begin with which might make it easier to massage the format later. – Code-Apprentice Mar 12 '22 at 01:00

3 Answers3

3

If I understood you correctly, you can use list-comprehension to filter out the values at specific index:

new_list = [word for idx, word in enumerate(the_list, 1) if idx % 8 != 0]
print(new_list)

Prints:

['02:00', '  GBP', '', 'Construction Output (MoM) (Jan)', '1.1%', '0.5%', '2.0%',
 '02:00', '  GBP', '', 'U.K. Construction Output (YoY) (Jan)', '9.9%', '9.2%', '7.4%',
 '02:00', '  GBP', '', 'GDP (MoM)', '0.8%', '0.2%', '-0.2%',
 '02:00', '  GBP', '', 'GDP (YoY)', '10.0%', '9.3%', '6.0%',
 '02:00', '  GBP', '', 'Index of Services', '1.0%', ' ', '1.2%']
Andrej Kesely
  • 168,389
  • 15
  • 48
  • 91
  • 1
    Incredible, I didn't know list-comprehension at all, but thank you so much for your answer, it definitely solved mi issue. I would also check that topic out, seems interesting . – NoahVerner Mar 12 '22 at 00:53
0

It's pretty simple:

del the_list[::8]  # or del the_list[7::8] if you try to delete the 7th element of each line
Jonathan Dauwe
  • 317
  • 2
  • 6
-1

just use this code to find the element that you want to delete in that case is empty string, in python is a false string so

for x in the_list:
    if not x:
        the_list.remove(x)
schtalman
  • 112
  • 3