2017-05-15 8 views
0

こんにちは私は 'www ...'と 'http:// ..'を含むすべての式を 'URL'だけに置き換えようとしています。私はこれを試しましたが、私はこのエラーが発生しています。文字列のパターンを置き換えるにはどうすればいいですか?

TypeError: expected string or buffer

私のコードは次のとおりです。

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

df[text]は、つぶやきが含まれているので、私はそこにテキストのみを保存しておきたいです。 私はPython 2にあります ありがとうございました。

+0

'df [text]'はつぶやきの_list_、つまり文字列のリスト、または単一の文字列ですか? df ['text']] 'の中で' ... = [re.sub( ''、 'URL'、s)を試しましたか? 'df [text]'の各値に –

+0

があると、1つのツイートがあります。これは何を求めているのですか? –

+0

実際にどのデータ型が 'df'であるかを明確にしてください。私たちはそれが文字列ではなく、バッファではないことを知っています、私はそれがpandas DataFrameであると仮定しています。 – acidtobi

答えて

1

re.subの3番目の引数としてstring or bufferを指定していないため、このエラーが発生しているようです。

>>> 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と仮定するとre.sub

+0

それはうまく、私はデータフレームを使用しています、ありがとう –

2

のためにそれを使用してみてくださいする前df['text']が適切な文字列が含まれていることre.subを使用していない、パンダのデータフレームであることを確認してください。代わりにpandas.DataFrame.replaceを使用してください:

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

これはあなたの正規表現に応じて交換しtextのすべての値を持つ新しい列text_1を生成します。

関連する問題