删除最后一个标点符号
removing the last punctuation character
我知道这个问题很容易被标记为重复,但在网站上搜索后我没有找到任何符合我真正想做的事情。
我有这样的字符串:
string = "hey, that's you(this is a test)!"
我正在开发一个函数,它只删除任何字符串中的最后一个标点符号,而不是嵌入在单词中的标点符号,也不是前导标点符号,该函数还应该将单词频率存储在字典中。
到目前为止这是我的代码:
def word_counts(string):
s = string.lower().split()
dic = {}
for key in string:
key = "".join([l for l in key if l.isalpha()])
if key in dic :
dic[key] += 1
else:
dic[key] = 1
return dic
我的代码输出以下结果:
{'a': 1, 'hey': 1, 'is': 1, 'test': 1, 'thats': 1, 'youthis': 1}
但我需要的是:
{'a': 1, 'hey': 1, 'is': 1, 'test)': 1, 'that's': 1, 'you': 1, (this': 1}
请注意,在单词 'test)'
中,感叹号已被删除,但括号需要保留。有关如何执行此操作的任何线索??
提前谢谢大家
编辑:
"hey" 后面的逗号应该去掉。我应该一次只删除一个标点符号,所以如果我在一个单词的末尾找到 2 个,则只删除一个。
检查任何可能的标点符号怎么样
并在找到一个时返回一个剥离的字符串?
import string
def strip_last_punctuation(s):
if s and s[-1] in string.punctuation:
return s[:-1]
else:
return s
test_str = "hey, that's you(this is a test)!"
print(strip_last_punctuation(test_str))
编辑:删除了不必要的 for
循环。
以前的答案似乎不错,无论如何我会建议考虑正则表达式的方法。
只需检查,对于每个单词,是否存在标点符号,如果是,请将其删除。
举个例子:
import re
t = 'test.'
punctuations = '[!,\.:;"\']'
m = re.search( punctuations, t )
t.replace( m.group(0), '')
#out: 'test'
我知道这个问题很容易被标记为重复,但在网站上搜索后我没有找到任何符合我真正想做的事情。
我有这样的字符串:
string = "hey, that's you(this is a test)!"
我正在开发一个函数,它只删除任何字符串中的最后一个标点符号,而不是嵌入在单词中的标点符号,也不是前导标点符号,该函数还应该将单词频率存储在字典中。
到目前为止这是我的代码:
def word_counts(string):
s = string.lower().split()
dic = {}
for key in string:
key = "".join([l for l in key if l.isalpha()])
if key in dic :
dic[key] += 1
else:
dic[key] = 1
return dic
我的代码输出以下结果:
{'a': 1, 'hey': 1, 'is': 1, 'test': 1, 'thats': 1, 'youthis': 1}
但我需要的是:
{'a': 1, 'hey': 1, 'is': 1, 'test)': 1, 'that's': 1, 'you': 1, (this': 1}
请注意,在单词 'test)'
中,感叹号已被删除,但括号需要保留。有关如何执行此操作的任何线索??
提前谢谢大家
编辑:
"hey" 后面的逗号应该去掉。我应该一次只删除一个标点符号,所以如果我在一个单词的末尾找到 2 个,则只删除一个。
检查任何可能的标点符号怎么样 并在找到一个时返回一个剥离的字符串?
import string
def strip_last_punctuation(s):
if s and s[-1] in string.punctuation:
return s[:-1]
else:
return s
test_str = "hey, that's you(this is a test)!"
print(strip_last_punctuation(test_str))
编辑:删除了不必要的 for
循环。
以前的答案似乎不错,无论如何我会建议考虑正则表达式的方法。 只需检查,对于每个单词,是否存在标点符号,如果是,请将其删除。
举个例子:
import re
t = 'test.'
punctuations = '[!,\.:;"\']'
m = re.search( punctuations, t )
t.replace( m.group(0), '')
#out: 'test'