如果字符串包含特殊字符,则使用 Boardtools 在字符串中查找子字符串将不起作用

问题描述 投票:0回答:1

今天我很沮丧。我正在通过子字符串查找实现一个非常简单的逻辑;结果发现情况更加复杂。

让我们考虑这个小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

有人有想法吗?编码重要吗?或者它有帮助吗?使用正则表达式,我们会遇到更多问题,因为那时我需要自动转义所有这些特殊字符。

python python-3.x regex string
1个回答
0
投票

程序中没有像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)

让我知道这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.