2012-03-07 38 views
16

Được rồi, tôi từ bỏ. Tôi không thể hiểu được những kết quả tôi nhận được từ đoạn mã sau (Python 2.6.6):Lỗi bình đẳng chuỗi trong Python. Đưa cái gì?

message.dest = message.dest.strip() 
print type(message.dest) 
print message.dest 
if message.dest == 'UI': 
    print "Equal!" 
else: 
    print "Not Equal!" 

Bằng cách nào đó đầu ra của tôi là:

<type 'str'> 
UI 
Not Equal! 

Bất kỳ ý tưởng về những gì đang xảy ra ở đây?

+8

Thử in 'repr (message.dest)'. –

+5

sẽ là tốt đẹp nếu downvoters chăm sóc để giải thích mình. – Simon

+0

@Simon: xem câu trả lời của tôi, nhưng tóm lại: Không có nỗ lực để giải quyết vấn đề của riêng mình, điều này chỉ có thể có lợi cho OP, không ai khác. – Marcin

Trả lời

-2

message.dest không phải là đối tượng bằng 'UI'. Đó là những gì đang xảy ra ở đây.

Bạn có thể muốn in repr của message.dest hoặc khám phá mã của bạn trong trình gỡ lỗi, thay vì yêu cầu Stackoverflow để đoán dữ liệu trong chương trình của bạn là gì.

+7

Tôi nghĩ rằng một số phương pháp sư phạm sẽ được hoan nghênh trong câu trả lời của bạn. – Simon

+0

Cảm ơn vì sự giúp đỡ "giúp đỡ". – kamek

+0

@Simon Tôi tưởng tượng cả hai 'repr' và debuggers là tin tức để OP. – Marcin

5

Được đăng bởi OP trong nội dung câu hỏi. Đã được chuyển thành câu trả lời của cộng đồng wiki.

Tôi chỉ muốn theo dõi vấn đề là gì trong trường hợp bất kỳ ai khác gặp phải tình huống tương tự.

Vấn đề là message.dest đã có một ký tự ASCII mã hóa trong chuỗi, ví dụ,

>>> repr(message.dest) 
"'\\x00UI'" 
>>> print message.dest 
UI 

Cá nhân nhầm lẫn của tôi bắt nguồn chủ yếu từ thực tế là các loại đối tượng là <type 'str'>. Điều này làm nổi bật nguy cơ sử dụng các câu lệnh print làm công cụ gỡ lỗi.

Các vấn đề liên quan