Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将视觉上相同的python字符串中有问题的字符替换为它们的标准等效字符_Python_String_Python 3.x_Ascii_Non Ascii Characters - Fatal编程技术网

将视觉上相同的python字符串中有问题的字符替换为它们的标准等效字符

将视觉上相同的python字符串中有问题的字符替换为它们的标准等效字符,python,string,python-3.x,ascii,non-ascii-characters,Python,String,Python 3.x,Ascii,Non Ascii Characters,我试图在包含Python3.7中特定单词/模式的dataframe列中查找字符串 在本例中,我查找任何包含月份或年份名称的字符串(从2016年到2030年) 我是这样做的(我确信有更好的方法来做到这一点,尽管现在我正在做的就是): 这与预期的一样有效,大多数在“text”列中包含字符串的行都包含年或月返回值“True”。(拆分操作是对包含在字符串中的特定句子进行磨练) 但是,在某些情况下,文本字符串明显包含月份名称,但返回“False” 例如: >>> df.loc[133,

我试图在包含Python3.7中特定单词/模式的dataframe列中查找字符串

在本例中,我查找任何包含月份或年份名称的字符串(从2016年到2030年)

我是这样做的(我确信有更好的方法来做到这一点,尽管现在我正在做的就是):

这与预期的一样有效,大多数在“text”列中包含字符串的行都包含年或月返回值“True”。(拆分操作是对包含在字符串中的特定句子进行磨练)

但是,在某些情况下,文本字符串明显包含月份名称,但返回“False”

例如:

>>> df.loc[133, 'text']
'May 3'

returns False after the above operation.

>>> string = df.loc[133, 'text']
>>> string == 'May 3'
False
当我将“string”的文本输出复制/粘贴到IntelliJ中的python终端时,它注意到单词“May”拼写错误

在寻找确定两个字符串之间精确差异的方法之后,我尝试了以下操作:

>>> ascii('May 3')
"'May 3'"

>>> ascii(string)
"'M\\u0430y 3'"
因此,字符串中包含的“a”字符显然存在一些问题,导致它与“May”不匹配

虽然我读过从字符串中剥离这些有问题的字符的方法,但我不太明白如何将这些字符和其他有问题的字符串转换为它们的标准等价物。如果存在类似的问题,我提前表示歉意,尽管我无法找到一个有效的解决方案来解决这个特定问题

这些字符串通过消息应用程序的API来源,其中每条消息都是一个自包含的“对象”,原始文本通过msg.raw_text提取。我遍历每条消息并将原始文本附加到数据帧列(df['text']),我希望这就是截取这些有问题字符的机会,尽管我不太确定如何解决这个问题,将原始的'm\u0430y 3'作为要搜索的项目之一

非常感谢您的帮助

多亏了为我指明了正确方向的人的帮助,我才能够使用


你的例子是使用西里尔字母“a”而不是拉丁字母“a”。除了在比较之前对输入进行音译外,我不确定您将如何理解这一点。我没有用过,但是看起来有一个pypi音译包。谢谢你的回复,这确实很奇怪,因为文本本身是英文的。我会研究音译包,如果我找到解决方案,我会更新!感谢您为我指明了正确的方向@garlon4-我能够用这个软件包解决我的问题。
>>> ascii('May 3')
"'May 3'"

>>> ascii(string)
"'M\\u0430y 3'"
>>> ascii('May 3')
"'May 3'"

>>> ascii(string)
"'M\\u0430y 3'"

>>> from unidecode import unidecode
>>> ascii(unidecode(string))
"'a'"

>>> unidecode(string) == 'May 3'
True