所以我需要比较2 ,
:
strings
因此,我将str1 = 'this is my string/ndone'
str2 = 'this is my string done'
中的新行替换为str1
:
' '
当打印两个字符串时,它们是相同的:
new_str = str1.replace('\n', ' ')
但是当使用'this is my string done'
运算符进行比较时,我将这两个字符串转换为数组以查看为什么它们不相等:
==
这是输出:
arr1 = bytearray(str1 , 'utf-8')
print(arr1)
arr2 = bytearray(str2 , 'utf-8')
print(arr2)
那str1 = bytearray(b'this is\xc2\xa0my string done')
str2 = bytearray(b'this is my string done')
是什么?
答案 0 :(得分:0)
ConsumerConfig values:
auto.commit.interval.ms = 5000
auto.offset.reset = latest
是Unicode字符'NO-BREAK SPACE' (U+00A0)的UTF-8编码。
答案 1 :(得分:0)
使用python unidecode
库
from unidecode import unidecode
str = "this is\xc2\xa0my string done"
print(unidecode(str))
o / p
this isA my string done
答案 2 :(得分:0)
==正在比较两个字符串
str1 = 'this is my string\ndone'
str2 = 'this is my string done'
str1 = str1.replace("\n"," ")
print(str1)
if (str1 == str2):
print("y")
else:
print("n")
输出为
this is my string done
y
答案 3 :(得分:0)
您只需从第一个字符串中删除UTF-8不间断空格character:
str1 = 'this is\xc2\xa0my string done'.replace('\xc2\xa0', ' ')
str2 = 'this is my string done'
print(str1 == str2)
输出:True
答案 4 :(得分:-1)
如其他地方所述,您的字符串中包含“ / n”而不是“ \ n”。 假设您要对所有空白字符进行标准化,这是我一直使用的非常方便的技巧:
string = ' '.join(string.split())
更新:好的,这就是原因:
如果您未指定应使用哪个分隔符string.split(),请按docs:
如果未指定sep或为None,则使用不同的拆分算法 应用:连续空格的运行被视为单个 分隔符,结果开头将不包含任何空字符串 或结尾(如果字符串具有前导或尾随空格)。
因此它在whitspaces上分割,并将多个空白视为单个分隔符。我不知道什么字符都被定义为“空格”,但是肯定包括所有常见的可疑字符。然后,当您使用''.join()将列表重新加入到字符串中时,就可以确定所有空格现在都是相同的。