今天我很沮丧。我正在通过子字符串查找实现一个非常简单的逻辑;结果发现情况更加复杂。
让我们考虑这个小Python代码:
word_one, word_two = ['(/ %$ss%*++~m/()', 'ss?=)?=)()']
field_content = "5uz8439qvnhfruieoghbvui gfurieaogv ui(/ %$SS%*++~m/() 123456789651321654 'ss?=)?=)() 87788+#~~##+"
pos_word_one = field_content.index(word_one)
pos_word_two = field_content.index(word_two)
print(pos_word_one) # throw an ValueError but the substring is included
print(pos_word_two) # 74
有人有想法吗?编码重要吗?或者它有帮助吗?使用正则表达式,我们会遇到更多问题,因为那时我需要自动转义所有这些特殊字符。
程序中没有像word_second这样的变量。 子字符串 word_one 包含大写字符
(%$SS%*++~m/())
,而 field_content 的相应部分包含小写字符 (%$ss%*++~m/())
。这种差异导致索引方法抛出 ValueError。
索引方法区分大小写。word_one, word_two = ['(/ %$ss%*++~m/()', 'ss?=)?=)()']
field_content = "5uz8439qvnhfruieoghbvui gfurieaogv ui(/ %$SS%*++~m/() 123456789651321654 'ss?=)?=)() 87788+#~~##+"
# Convert everything to lowercase for case-insensitive comparison
pos_word_one = field_content.lower().index(word_one.lower())
pos_word_two = field_content.index(word_two) # No need to convert for word_two as it matches the case
print(pos_word_one)
print(pos_word_two)
让我知道这有帮助。