从另一个中提取一个词

时间:2017-12-02 17:32:03

标签: python

我有两个字:

word1 = sunday
word2 = sun

现在我想得到这个结果:

result = word1-word2 = day

我怎么能这样做? 我没找到任何东西......

6 个答案:

答案 0 :(得分:3)

这取决于你想要做什么。

1)您可以决定使用word2

删除word1word1.replace(word2, "")的{​​strong>每次出现

2)您可能还想替换仅出现第一次出现,您可以通过调用word1.replace(word2, "", 1)来实现。但是,这会删除word2 word1word2出现的位置。

3)另外,如果您要执行的操作仅在word1开始时删除def sub(word1, word2): if word1[:len(word2)] == word2: return word1[len(word2):] else: return word1 ,我会选择以下内容:

word2

请注意,这假设word1较短,您可能需要添加一些检查。

4)最后,您可能希望在word2sunday - sunflower = day之间仅减去匹配前缀,例如def sub(word1, word2): for index, letter in enumerate(word1): if letter != word2[index]: break return word1[index:] 。你可以这样做:

word2

请注意,这再次假设.bashrc更短。

一旦确定了减法的规格,您就可以选择所需的解决方案。

答案 1 :(得分:1)

您可以使用replace()功能

word1 = "sunday"
word2 = "sun"

word3 = word1.replace(word2, "")

print(word3)

答案 2 :(得分:0)

您可以使用字符串slicing。我们想采取"切片"从这个词的结尾开始减去。由于index方法给出了字符串开头的索引,我们需要在其上添加要减去的字符串的长度,以获得切片应该从哪里开始的索引。

因此,使用该逻辑,这是一个通用函数:

def sub(s1, s2):
    return s1[s1.index(s2)+len(s2):]

和测试:

>>> sub("sunday", "sun")
'day'

答案 3 :(得分:0)

对于true"减法",您可能想要创建自己的字符串对象:

import re
class String:
   def __init__(self, val):
       self.s = str(val)
   def __sub__(self, value):
        return re.sub(value.s, '', self.s)

s = String('sunday')
s1 = String('sun')
print(s-s1)

输出:

day

答案 4 :(得分:-1)

不确定您之后究竟是什么,或者其中一种方法是否可行,但您可以这样做:

>>> word1 = 'sunday'
>>> word1.replace("sun", "")
'day'

# or

>>> word1[3:]
'day'

但不,你不能对这样的字符串进行通用减法。

答案 5 :(得分:-1)

Python内置的字符串类不支持减法。相反,你可以通过使用字符串b作为参数来分割字符串a来破解你自己的字符串减法函数。

Zaka Elab已经优雅地回答了这个问题。所以,我将分享他的解决方案:

def subtract(a, b):                              
  return "".join(a.rsplit(b))

subtract("sunday", "sun")