Home > Software design >  A space adds in the file everytime we run the code in python
A space adds in the file everytime we run the code in python

Time:08-05

I'm trying to add some data to file in the form of a list.the problem is that every time I run the code a space is added in the list items.for example the list is empty and added "hello" to the list.

The list will look like this:

['','hello']

So as you can see the first list item is an empty list item(index:0). After the empty list item my "hello" is added.

Now if I run the code again and add "world" to it.

The list will look this:

['',' hello','world']

So you can see there is space before "hello" but "world" is proper

And again if I run the code and add "helloworld" It will look like this:

['',' hello',' world','helloworld']

So now one more space is there is hello and one in world.

So if someone could help I would be really thank full:)

directory = "F"

with open(f"{directory}:\\My_codes\\python\\question_data.txt","r") as rbb:
    readb = rbb.read()
with open(f"{directory}:\\My_codes\\python\\question_data.txt","w") as qw:
    var1 = readb.replace("[",'')
    var1_2 = var1.replace("'","")
    var2 = var1_2.replace("]",'')
    var3 = var2.replace('"','')
    readbl = var3.split(',')
    readbl.append(input("Type the question here:"))
    qw.write(str(readbl))
    question_data = readbl

print(question_data)

CodePudding user response:

The line:

readbl = var3.split(',')

is the problem since, when var3 is empty, the split() method adds an empty string.

Its easy to fix like this:

readbl = var3.split(',') if var3 else []

Also, you should consider using json to store strings in a list, rather than doing your own parsing:

import json
import os    

directory = "F"
fullpath = f"{directory}:\\My_codes\\python\\question_data.txt"

readbl = []
if os.path.getsize(fullpath) > 0:
    with open(fullpath,"r") as rbb:
        readbl = json.load(rbb)

readbl.append(input("Type the question here:"))

with open(fullpath,"w") as qw:
    json.dump(readbl, qw)

print(readbl)

CodePudding user response:

>>> a = str(['Hello', 'world'])
>>> print(repr(a))
"['Hello', 'world']"

List converted to string, with , as separator, not ,, so

readbl = var3.split(', ')
  • Related