我怎么能不计算我的字符串之间的空格

所以我有,pe,这个字符串:'我爱python',我想将所有空格转换为'_'。我的问题是我还需要删除外部空间,所以我没有完成结果:'_I_love_python__' 和更像这样的 'I_love_python' 我搜索并发现我可以用一行代码开发它,mystring.strip().replace(" ", "_")不幸的是我不能在我的论文中应用的语法。所以我得到的是这个:


frase= str(input('Introduza: '))


aux=''



for car in frase:

    if car==' ':

        car='_'

        aux+=car

    else:

        aux+=car




print(aux)

我现在的问题是删除那些外部空间。我想到的是在开始时为 i 运行另一个,在字符串的最后运行另一个,然后停止直到他们找到一个非空格字符。但不幸的是,我还没有能够做到这一点......


感谢您提供的所有帮助!


跃然一笑
浏览 256回答 3
3回答

慕森卡

我想出了以下解决方案:您遍历字符串,但不是在出现下划线时立即用下划线替换空格,而是存储遇到的空格数。然后,一旦达到非空格字符,就将找到的空格数量添加到字符串中。因此,如果字符串以大量空格结尾,它将永远不会到达非空格字符,因此永远不会添加下划线。为了在开头截掉空格,我只是添加了一个条件来添加下划线:“我以前遇到过非空格字符吗?”这是代码:text = "   I love   python    e  "out = ""string_started = Falseunderscores_to_add = 0for c in text:    if c == " ":        underscores_to_add += 1    else:        if string_started:            out += "_" * underscores_to_add        underscores_to_add = 0        string_started = True        out += cprint(out)  # prints "I_love___python____e"

白衣染霜花

您可以使用以下技巧删除字符串中的前导和尾随空格:s = ' I love python   'ind1 = min(len(s) if c == ' ' else n for n, c in enumerate(s))ind2 = max(0 if c == ' ' else n for n, c in enumerate(s))s = ''.join('_' if c == ' ' else c for c in s[ind1:ind2 + 1])print('*', s, '*', sep='')输出:*I_love_python*

白衣非少年

如果不允许使用 strip() 方法def find(text):    for i, s in enumerate(text):        if s !=  " ":            break    return itext = "   I love   python    e  "text[find(text):len(text)-find(text[::-1])].replace(" ","_")texts = ["   I love   python    e  ","I love   python    e"," I love   python    e","I love   python    e ", "I love   python    e"]for text in texts:    print (text[find(text):len(text)-find(text[::-1])].replace(" ","_"))输出:I_love___python____eI_love___python____eI_love___python____eI_love___python____eI_love___python____e给定一个字符串find会找到字符串中的第一个非空格字符使用find查找第一个非空格字符和最后一个非空格字符使用上面找到的索引获取子字符串用 _ 替换上面子字符串中的所有空格
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python