3

Found a similar question via search but I'm a new (terrible) programmer and couldn't understand the answer.

I have a .txt file with multiple strings, seperated by a '-'. I used a split to seperate some of the strings into variables, and 2 of them are equal, but in an if statement they come out as not equal.

f_nmr, f_Question, f_1, f_2, f_3, f_answer = file.readline().split('-')
print(f_2)
print(f_answer)
if f_2 == f_answer:
    print("Yes")
elif f_2 != f_answer:
    print("No")

This produces the following:

Sweden

Sweden

No

There is a space infront and after both "Sweden" strings, and they're both written with an uppercase 'S', yet are not equal? Where have I messed up?

5
  • What does the input file look like? Commented Sep 21, 2017 at 0:20
  • 1
    Try to trim both strings and then test the result with f_2.strip() and f_answer.strip(). Commented Sep 21, 2017 at 0:20
  • 2
    What do print(len(f_2)) and print(len(f_answer)) show? Commented Sep 21, 2017 at 0:21
  • 1
    Try print(repr(f_2)) and print(repr(f_answer)); I guarantee you'll see a difference. Commented Sep 21, 2017 at 0:22
  • 1
    @ShadowRanger not necessarily. repr('Ѕweden') and repr('Sweden') looks exact the same with the glyphs in my terminal, but those strings aren't equal. Commented Sep 21, 2017 at 0:28

1 Answer 1

5

The last element includes a newline. Let's take this input file as an example:

$ cat file.txt
Sweden-Sweden

Now, let's read it in:

>>> a, b = open('file.txt').readline().split('-')
>>> a,b
('Sweden', 'Sweden\n')
>>> a == b
False

The solution is to strip the newline:

>>> a, b = open('file.txt').readline().rstrip('\n').split('-')
>>> a == b
True
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.