1

I'm currently working on a simple txt converter. The data is loaded from a txt file into a scrolledtext widget. Now I want to read this text line by line (since I'd like to have the opportunity to edit the original data) and do the conversion based on the scrolledtext data. However, I can't get satisfying results.

If I simply print the text I got by using .get('1.0', 'end-1c') it looks exactly like the scrolledtext data. Now I want to read it line by line with a for loop and seperate it with the strip and split command. Basically the same way I was doing when reading directly from the file, but it's not working.

Input data contains a lot of spaces:

"                  1267    33311225.807"
"                  1268    33311224.395"

I would expect ['1267', '33311225.807']. Instead I get a new line for every digit:

[1]
[2]
[6]
[8]
...

and so on.

import tkinter.scrolledtext as tkst
from tkinter import filedialog
from tkinter import ttk

root = tk.Tk()
root.title("Converter")
root.geometry('1000x690+200+50')
tab_parent = ttk.Notebook(root)

tab1 = ttk.Frame(tab_parent)
tab_parent.add(tab1, text="  convert  ")

frame1 = tk.Frame(tab1)
textPad_top = tkst.ScrolledText(master=frame1)

coordinates_text = textPad_top.get('1.0', 'end-1c')
for line in coordinates_text:
    line_splitted = line.strip().split(" ")
    read_coordinates = [ele for ele in line_splitted if ele.strip()]
    point_id.append(read_coordinates[0])
    r_value.append(read_coordinates[1])

root.mainloop()

Eventually I want to have several lists. One for every column given in the source file. I'm an absolute beginner in programming and would really appreciate your help.

Michael
  • 13
  • 3

1 Answers1

0

When you iterate over a string, it will iterate over each character which is exactly what you're reporting.

If you want to iterate over each line, you need to split the data on newlines

for line in coordinates_text.split("\n"):
    ...
Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
  • Very good to know - that works perfectly fine. Thanks a lot! But what data type do I have if I open a file and iterate over it? I thought it's also a string. – Michael Jan 17 '21 at 14:15
  • @Michael: if you iterate over a file, the data type is an open file. The open file is designed to return one line at a time when you iterate over it. – Bryan Oakley Jan 17 '21 at 18:32