在python3中,regex为同一个字符串返回不同的结果

2024-09-26 22:50:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的代码

import re

s = "farmer’s boy of s...=--ixpence."
b = "farmer's boy of s...=--ixpence."
s_replaced = re.sub("[^a-zA-Z' ]+", '', s)
b_replaced = re.sub("[^a-zA-Z' ]+", '', b)
print(s_replaced)
print(b_replaced)

>>> farmers boy of sixpence
>>> farmer's boy of sixpence

我试图编写一个代码,消除除撇号以外的所有标点符号,我不明白为什么regex会对同一组字符串返回不同的结果。为什么会这样?你知道吗


Tags: of字符串代码importreregexboyprint
3条回答

正如其他人所说,sb是不同的,因为它们都包含不同的撇号,'。这很容易检查:

>>> s = "farmer’s boy of s...= ixpence."
>>> b = "farmer's boy of s...= ixpence."
>>> s == b
False
>>> print([x for x in s if x not in b])
['’']

这表明s包含'’'撇号,但b不包含。为了确保只比较相等的字符串,您需要事先进行初步的==检查:

s = "farmer’s boy of s...= ixpence."
b = "farmer's boy of s...= ixpence."

if s == b:
   print("Both strings are equal")
   # Rest of code here

它在执行其他操作之前检查sb的值是否相同。你知道吗

字符串不一样。你知道吗

s包含,而b包含'[^a-zA-Z' ]匹配任何不是a-zA-Z'(空格)的内容。它匹配,它位于s。你知道吗

第一个字符串是右单引号,第二个是撇号。您可以检查字符值here

相关问题 更多 >

    热门问题