7

这是一个游戏,用户可以输入一个像“Iced tea..”这样的值我想操纵字符串返回“Iced tea”而没有尾随的标点符号。

寻找最优雅/最简单的 python 解决方案。

试过了

def last_character(word):
  if word.endswith('.' or ','):
      word = word[:-1]
  return word 

如果末尾只有一个标点符号,则该方法有效。但这并不是包罗万象的。

找到了一个Java解决方案

String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1");
4

3 回答 3

17
>>> 'words!?.,;:'.rstrip('?:!.,;')
'words'
于 2012-05-03T03:35:38.760 回答
0

在这种情况下,rstrip可能就是您想要的。但总的来说,将类似 Java 的东西翻译成 Python 并不难。直接翻译如下所示:

import re
subject_string = 'Iced tea..'
result_string = re.sub('([a-z]+)[?:!.,;]*',r'\1',subject_string)
于 2012-05-03T03:40:20.660 回答
0
import string
s='aaa...,'
count= 0
>>> for l in s[::-1]:
...     if l in string.punctuation:
...             count = count +1
...     else:
...             break
>>> s[:c]
'aaa'
于 2012-05-03T03:54:25.203 回答