打印字符串中特定ch之前的每个字符

2024-09-30 14:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

phrase='!_#@%'
pun=''
string='dj_khaled'
for item in string:
    if item not in phrase:
       pun=pun+item
print(pun)

我的问题是,我得到的输出是djkhaled,而应该是dj,所以基本上,我想在某个符号出现之前包括每个字符。这串是字母数字的。在


Tags: inforstringif字母符号notdj
3条回答

只要一个字符不在phrase中,循环就会添加到pun中,相反,您应该检查字符是否在短语中,break中。在此之前,您将继续向pun添加字符:

for item in string:
    if item in phrase:
        break
    pun += item

当执行时,它现在正确地输出"dj"。在

如果前面的方法还不够,您还可以考虑从itertools得到{},如果前面的方法还不够:

^{pr2}$

还有一种方法不使用break(?)可能是通过使用一个布尔标志来指示是否看到了phrase中的值,然后在决定是否应该添加到pun时,可以根据该标志执行操作:

phrase='!_#@%'
pun=''
string='dj!khaled'
seen = False
for item in string:
    if item in phrase:
       seen = True
    if not seen:
        pun += item
print(pun)

另一种方法是用一个while循环来实现

forbidden ='!_#@%'
string='dj_khaled'
result =""
i = 0
while i<len(string) and string[i] not in forbidden:
    result = result + string[i]
    i = i+1
print( result )

但这更容易出错,但在功能上与在Jin的第一个示例中使用break相同。在

以及我在评论中提到的功能版本

^{pr2}$

使用index方法编制索引可以更轻松地完成此操作:

pun = string[:string.index(phrase)]
print(pun)

如果我们有多个“短语”,并且有些短语可能不在字符串中:

^{pr2}$

相关问题 更多 >