Python 为什么在尝试使用正则表达式时会出现错误?

Python 为什么在尝试使用正则表达式时会出现错误?,python,regex,Python,Regex,对字符串对象使用re.sub时,我收到TypeError:预期为字符串或类似字节的对象 我正在尝试清理我下载并存储在csv文件中的一堆推文。csv文件只包含两列:显示每条推文数量的No列和正文。我正在使用re.sub删除推文正文中的所有提及内容。但该命令返回一个错误。下面是我的代码和错误: 转换为列表 数据=df.content.values.tolist 删除提及 数据=[typesent for sent in data[:10]] 打印数据 数据=[re.sub'\S*@\S*\S?',为

对字符串对象使用re.sub时,我收到TypeError:预期为字符串或类似字节的对象

我正在尝试清理我下载并存储在csv文件中的一堆推文。csv文件只包含两列:显示每条推文数量的No列和正文。我正在使用re.sub删除推文正文中的所有提及内容。但该命令返回一个错误。下面是我的代码和错误:

转换为列表 数据=df.content.values.tolist 删除提及 数据=[typesent for sent in data[:10]] 打印数据 数据=[re.sub'\S*@\S*\S?',为传入数据发送[:10]] 如上所示,我仔细检查并确保regex命令的输入是字符串。然而,我收到的错误表明情况并非如此


实际上,类型是类型而不是str

您可以通过执行以下操作轻松获取类型名称:

数据=[typesent.\uuuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 使用type检查值是否为字符串是可以的,但是通过将结果重新分配回数据,当您希望将其应用于字符串本身时,您正在对类型执行regex替换

无论如何,您可以使用pandas的内置函数,而不是使用re:

df['content'].str.replace(r'\s+', ' ')

类型不是字符串,但它们是!我仔细检查了一下……不,他们真的不是。甚至字符串的类型本身也不是字符串;相反,它是类型的一个实例,即;它自己的类型是。你是对的。我收到了TypeError错误,并试图确保输入是字符串。不过,我忘了删除那一行,正如你所说的,它破坏了我的代码。谢谢这会产生字符串,但几乎可以肯定是错误的字符串。很难说作者试图做什么,因为数据在打印之前就被类型替换了。很明显,在尝试验证类型时,错误地执行了重新分配。
TypeError                                 Traceback (most recent call last)
<ipython-input-11-bd1250ebb94b> in <module>
      6 data = [type(sent) for sent in data[:10]]
      7 print(data)
----> 8 data = [re.sub('\S*@\S*\s?', '', sent) for sent in data[:10]]
      9 

<ipython-input-11-bd1250ebb94b> in <listcomp>(.0)
      6 data = [type(sent) for sent in data[:10]]
      7 print(data)
----> 8 data = [re.sub('\S*@\S*\s?', '', sent) for sent in data[:10]]
      9 

~\Anaconda3\lib\re.py in sub(pattern, repl, string, count, flags)
    190     a callable, it's passed the Match object and must return
    191     a replacement string to be used."""
--> 192     return _compile(pattern, flags).sub(repl, string, count)
    193 
    194 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object
df['content'].str.replace(r'\s+', ' ')