使用正则表达式:
import re
pattern = re.compile(r"'[^']+'") # 1 or more characters between single quotes
result = pattern.sub('XXXXX', inputtext)
上面只接受两个单引号,中间有一个或多个字符(它们本身不是单引号)。
请参阅 Python 文档中包含的Regular Expression HOWTO,了解如何使用此类模式的良好介绍。
演示:
>>> import re
>>> pattern = re.compile(r"'[^']+'")
>>> pattern.sub('XXXXX', "The value '0000' is not valid.")
'The value XXXXX is not valid.'
>>> pattern.sub('XXXXX', "The value 'GA1234' for <category> must be changed.")
'The value XXXXX for <category> must be changed.'
>>> pattern.sub('XXXXX', "The value '.30' is not a valid entry.")
'The value XXXXX is not a valid entry.'
>>> pattern.sub('XXXXX', "The value 'Invitation for Party' is not valid.")
'The value XXXXX is not valid.'
>>> pattern.sub('XXXXX', "On line '0010', the value 'CARD' is invalid.")
'On line XXXXX, the value XXXXX is invalid.'
如果您有熊猫系列,请使用Series.replace();如果您设置regex=True,它也需要正则表达式,本质上充当re.sub() 调用系列中的所有值:
df.Message.replace(r"'[^']+'", 'XXXXX', regex=True)
演示:
>>> import pandas as df
>>> df = pd.DataFrame({
... 'Message': pd.Series([
... "The value '0000' is not valid.",
... "The value 'GA1234' for <category> must be changed.",
... "The value '.30' is not a valid entry.",
... "The value 'Invitation for Party' is not valid.",
... "On line '0010', the value 'CARD' is invalid.",
... ])
... })
>>> df.Message.replace(r"'[^']+'", 'XXXXX', regex=True)
0 The value XXXXX is not valid.
1 The value XXXXX for <category> must be changed.
2 The value XXXXX is not a valid entry.
3 The value XXXXX is not valid.
4 On line XXXXX, the value XXXXX is invalid.
Name: Message, dtype: object