删除最后一个和python字符串,如果它在那里

时间:2018-01-13 08:23:51

标签: python

我将字符串数据输入到我的python代码中。有些时间数据会带来额外的"和"或"或者例如

In [177]: %%timeit
     ...: from pandas.tseries.offsets import MonthEnd
     ...: def find_F(df1):
     ...:     F = df2.loc[(df2.index > df1 + MonthEnd(1)) &
     ...:              (df2.index < df1 + MonthEnd(4)), 'F']
     ...:     return F.values[0]
     ...: 
     ...: df1['F'] = df1['Expiry'].apply(find_F)
     ...: 
100 loops, best of 3: 15.7 ms per loop

In [178]: %%timeit
     ...: df = pd.merge(df1.assign(A=1), df2.reset_index().assign(A=1)[['A','Expiry','F']], on='A')
     ...: mask = (df['Expiry_y'] > df['Expiry_x'] + MonthEnd(1)) & \
     ...:        (df['Expiry_y'] < df['Expiry_x'] + MonthEnd(4))
     ...: 
     ...: df = df[mask].drop('Expiry_y', 1)
     ...: 
100 loops, best of 3: 9.48 ms per loop

在这种情况下,我需要删除最后一个&#34;和&#34; &安培;最终结果将是

Tom and Mark and 

但是当数据会像这样出现时

Tom and Mark

然后我将在不删除&#34;和&#34;

的情况下考虑数据

你能建议我怎么做吗?

2 个答案:

答案 0 :(得分:1)

使用str.strip()函数和字符串切片

lst = ['Tom and Mark and ', 'Harry and John', 'Bland and']

for s in lst:
    s = s.strip()
    s = s[:-4] if s[-4:] == ' and' else s
    print(s)

输出:

Tom and Mark
Harry and John
Bland

答案 1 :(得分:1)

您可以使用正则表达式

import re
s = re.sub('\s+and\s*$', '', s)