Python Forum

Full Version: How to remove whitespace from a string when .replace and .strip do not work
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have a python server and when i ask the client the login name to check it is valid with the 1 in the database, for some reason there is always a whitespace at the end of the string. I already tried this:
newstring = oldstring.replace(' ', '')    #not working, white space is still there
newstring = oldstring.strip()  # also not working, whitespace is still there

#i also tried:
newstring = oldstring.replace('\n\t\r\s\f', '')    #not working, white space is still there
Here is a code snippet from the server:
client_loggedin = False
            while client_loggedin == False:
                accountName = conn.recv(1024).decode("utf_8")
                print(accountName + " = " + str(len(accountName)))

                db = pymysql.connect("XXXXXXXXXXXXXsecretXXXXXXXXXX")
                cursor = db.cursor()
                cursor.execute("SELECT `XXXXXXXXXXXXX` FROM `XXXXXXXXXXXXX` WHERE `XXXXXXXXXXXXX`=%s", accountName)
                dataraw = cursor.fetchone()
                data = dataraw[0]
                db.close()
                if str(accountName) != str(data):

                    print (str(data) + "+" + str(accountName))
                    print("datalengte: " + str(len(data)) + " en " + "accountNamelengte: " + str(len(accountName)))
                    print ("Deze gebruiker bestaat niet")
                elif accountName == data:
                    reply = "Welcome " + str(accountName)
                    conn.sendall(reply.encode("utf_8"))
                    client_loggedin == True
                    for x in clientList:
                        if x != conn:
                            x.sendall((str(accountName) + " has joined the server").encode("utf_8"))
Let's say there is an account name oliver in the data base and the client sends oliver. For some some reason i don't know is the string length 7 and not 6 and this makes comparing the value with the value from the database imposseble
try this
Remove ALL spaces in a string, even between words:

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)
Remove spaces in the BEGINNING of a string:

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)
Remove spaces in the END of a string:

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)
Remove spaces both in the BEGINNING and in the END of a string:

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)
Remove ONLY DUPLICATE spaces:

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))
I tried and none of that is working. The string keeps having that additional space at the end.
I tried many many different things. None of them works
What does print(repr(accountName)) return? Since you are using utf-8, I expect there's a unicode character in there that strip doesn't recognize as white space.
it returned this in the console:
'oliver\x00'
Looks like a null unicode character. Try accountName = accountName.replace('\x00', '').
Jep i already tried:
accountName = accountName.replace('\x00','')
Thank you very much
Hm, this is strange. Usually a null byte is not printed as a whitespace.
It's used often as delimiter with the find command piped to xargs.