python - 如何用新值替换字符串中的旧值?
问题描述
所以问题表明,如果句子中的给定单词以相同的字符开头和结尾,我删除该字符并继续这样做,直到它们不再相同或它们的长度小于 3。
示例:aabaa -> aba -> b
这不是问题,所以现在我应该用原始字符串中的“b”替换“aabaa”这个词。
我唯一的问题是句子没有空格。例如:
信任,就是一切。-> rus,is,all。
还要注意诸如(. , ! ? ; :)
将被忽略但必须在最终输出中存在的字符。
到目前为止,我已经写了这个,但它不满足上面的例子:
s1 = str(input())
sentence = s1.split()
news = []
ignorabelCharacters = ['.',',','!','?',';',':']
helpList = []
for i in range(len(s1)):
if s1[i] in ignorabelCharacters:
helpList.append([s1[i],i])
for i in sentence:
i = str(i)
j = 0
while j < len(i):
if i[j] in ignorabelCharacters:
i = i.replace(i[j],' ').strip()
j+=1
else:j+=1
news.append(i)
s2 =' '.join(news)
newSentence = s2.split()
def checkAgain(newSentence):
newNewSentance = []
count = []
x=0
for i in newSentence:
j = len(i)
while j > 2:
if i[0].lower() == i[-1] or i[0].upper() == i[-1]:
i = i[1:-1]
j-=2
x+=2
else:
break
count.append(x)
newNewSentance.append(i)
x=0
return [newNewSentance,count]
newNewSentence = checkAgain(newSentence)[0]
count = checkAgain(newSentence)[1]
def finalProcessing(newNewSentence,sentence,newSentence):
finalSentence = []
for i in range(len(sentence)):
if len(newNewSentence[i]) == len(sentence[i]):
finalSentence.append(newNewSentence[i])
else:
x = len(sentence[i]) - len(newSentence[i])
if x ==0:
finalSentence.append(newNewSentence[i])
else:
value = newNewSentence[i] + sentence[i][-x:]
finalSentence.append(value)
return finalSentence
finalSentence = finalProcessing(newNewSentence,sentence,newSentence)
def finalPrint(finalSentece):
for i in range(len(finalSentece)):
if i == len(finalSentece) -1:
print(finalSentece[i],end='')
else:
print(finalSentece[i],end= ' ')
finalPrint(finalSentence)
解决方案
这种方法与您的不同,但这是我的做法。
def condenseWord(w):
ln = len(w)
while ln >= 3:
if w[0].lower() == w[-1].lower():
w = w[1:-1]
ln = len(w)
else:
break
return w
def collapseString(s):
sep_chars = {' ', ',', '.', ';', ':', '!', '"', "'"}
out = r''
wdstrt = 0
lstltr = 0
for i in range(len(s)):
if s[i] in sep_chars:
ck = condenseWord(s[wdstrt:i])
out += ck
out += s[i]
wdstrt = i+1
lstltr = i+1
else:
lstltr = i
out += s[wdstrt:lstltr]
return out
然后
collapseString('aabaa')
-> 'b' 和
collapseString('Trust,is,all.' )
-> 'rus,is,all.'
推荐阅读
- scikit-learn - 模型性能“好”。但是系数权重很奇怪
- python - 在代码中使用 a.any() 或 a.all() 错误来解决耦合 ODE
- python - 无法在 selenium 中使用 xpath 定位表元素
- python - 使用套接字编程在python中将String转换为Json类型
- python - 显示来自电池管理系统的实时数据
- linux - Bash - 更简单、更易读的方法来检查变量是真还是假
- javascript - 如果对象具有特定属性,则仅使用它们创建一个新对象
- reactjs - 如何限制上传antd到单个文件?
- pygame - 带有pygame的Kivy mp3播放器不会停止歌曲
- java - 简化 if 语句: if (legendTitle != null && legendTitle.equals("My house"))