如何替换字符串中的模式?

时间:2017-05-15 22:03:04

标签: python regex replace

您好我正在尝试替换包含' www ...'的所有表达式和' http://..'只有' URL'。我试过了,但是我收到了这个错误。

TypeError: expected string or buffer

我的代码是:

df['text_1'] = re.sub('((www\.[^\s]+)|(https?://[^\s]+))','URL',df['text'])

df[text]包含推文,所以我想只保留文本。 我在Python 2中 感谢。

2 个答案:

答案 0 :(得分:2)

假设df是pandas DataFrame,请不要使用re.sub。请改用pandas.DataFrame.replace

df['text_1'] = df['text'].replace('((www\.[^\s]+)|(https?://[^\s]+))',
                                  'URL',
                                  regex=True)

这将生成一个新列text_1,其中所有值text都会根据您的正则表达式替换。

答案 1 :(得分:1)

听起来你收到了这个错误,因为你没有提供string or buffer作为re.sub的第三个参数。

>>> re.sub('\W', 'REPLACED', 'this is my text')
'thisREPLACEDisREPLACEDmyREPLACEDtext'
>>> re.sub('\W', 'REPLACED', None)
Traceback (most recent call last):
...
TypeError: expected string or buffer

确保df['text']包含正确的字符串,然后再尝试将其用于re.sub