如何删除字母的首次出现?

时间:2019-03-06 03:50:47

标签: python

我知道如何使用拼接删除字母的首次出现,但是我试图不使用拼接,.find()、. count()等任何字符串函数来实现这一点。我可以似乎无法弄清楚如何完成拼接。

这是我目前可以正常使用的拼接功能

s1 = ''
s2 = len(remWord)
for i in range(s2):
    if (remWord[i] == remLetter):
        s1 = remWord[0:i] + remWord[i + 1:s2]
return s1

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

我假设如果字符串中不包含字母,则不会删除任何内容,因此可以使用以下代码:

严格不使用拼接

new_string = ''
found = False

for i in range(len(remWord)):
    if remWord[i] != remLetter or found:
        new_string += remWord[i]
    else:
        found = True

如果允许使用剪接

new_string = ''

for i in range(len(remWord)):
    if remWord[i] != remLetter:
        new_string += remWord[i]
    else:
        break

new_string += remWord[i + 1:]

答案 1 :(得分:1)

遇到第一个字母后,您应立即停止处理,为此请使用break

remWord = 'this is the word to process'
remLetter = 's'
s1 = ''
s2 = len(remWord)
for i in range(s2):
    if (remWord[i] == remLetter):
        s1 = remWord[0:i] + remWord[i + 1:s2]
        break
print s1

输出:

$ python firstletter.py 
thi is the word to process

如果省略break,则输出将如下所示:

$ python firstletter.py 
this is the word to proces

最后一次遇到输入字符串中的remLetter时,if子句将得到满足

答案 2 :(得分:1)

字符串是序列类型,因此我们(大多数情况下)只需执行序列操作即可。

seen = False
chars = ''
for ch in remWord:
    if ch == remLetter and not seen:
        seen = True
    else:
        chars += ch

麻烦之处在于它有点贵,因为您每次都要创建一个新字符串。另外,您可以使chars成为列表并使用StringIO,如果可以使用,则使用''.join。