Дано:Python сравнение строк не удается, но если принимает
if parse_rec[i] != col_data:
parse_rec[i] = col_data
data_changed = True
print str(i)
print str(parse_rec[i])
print str(col_data)
print type(parse_rec[i])
print type(col_data)
print len(parse_rec[i])
print len(col_data)
print parse_rec[i] != col_data
я получаю:
10
1037864
1037864
<type 'str'>
<type 'str'>
7
7
False
Если я изменяю тест:
if str(parse_rec[i]) != str(col_data):
Он работает, как ожидалось, и ' если условие не работает (они равны) и ничего не печатает. Что делает str()? Зачем мне это нужно? Могу ли я не доверять сопоставлениям строк в Python?
Я проверил его. В моем файле нет вкладок.
* «Могу ли я не доверяю любые сравнения строк в Python?» * - это звучит как проблема в том, что ** вы не выполняли строковые сравнения **. Вы, конечно, не можете ожидать, например. '1 == '1'', Python строго типизирован. – jonrsharpe
Мог делиться содержимым 'parse_rec'? – shanmuga
Во-первых, ваши 'print' были бы более полезными, если вы покажете нам, что 'parse_rec [i]' is * before * вы назначили его 'col_data'. На самом деле, держу пари, если вы делаете все эти отпечатки * перед * назначением, вы можете увидеть ответ. Во-вторых, нет смысла спрашивать, не завершились ли сравнения строк, когда ваш пример показывает, что * some * сравнение терпит неудачу, но сравнение строк не делает. – dwanderson