所以我有这个字符串,例如:'I love 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)
我现在的问题是删除这些外部空间。我想到的是在字符串的开头和结尾处为我运行另一个,并停下来直到他们找到一个非空间角色。但是不幸的是我还没能做到这一点...
感谢您提供的所有帮助!
答案 0 :(得分:1)
我想出了以下解决方案:
您可以遍历字符串,但是不必立即用下划线替换空格,而是存储遇到的空格数量。然后,一旦达到非空格字符,则将找到的空格量添加到字符串中。因此,如果字符串以很多空格结尾,则它将永远不会到达非空格字符,因此永远不会添加下划线。
为了在开始时删除空格,我只是添加了一个条件,以添加下划线为:“我之前是否遇到过非空格字符?”
代码如下:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="container">
<select v-model="selected">
<option
v-for="item in items"
:value="item">
{{ item.name }}
</option>
</select>
<mini-card :item="selected" />
</div>
答案 1 :(得分:0)
您可以使用以下技巧来删除字符串中的前导和尾随空格:
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*
答案 2 :(得分:-1)
def find(text):
for i, s in enumerate(text):
if s != " ":
break
return i
text = " 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____e
I_love___python____e
I_love___python____e
I_love___python____e
I_love___python____e
find
,将找到字符串中的第一个非空格字符find
查找第一个非空格字符和最后一个非空格字符