返回字符串

时间:2017-08-31 17:33:37

标签: python string list list-comprehension

我的问题如下。 我需要删除一个大字符串中的标点符号。 然后我需要删除并将字符串中每个WORD的最后一个字母返回到列表或字符串中。

这是我正在使用的字符串。

text = """
Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.
Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi.
Nam eget dui. Etiam rhoncus. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient python,
nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo,
fringilla vel, aliquet nec, vulputate eget, arcu. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
baxa quouq. axa la consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. Etiam ultricies nisi vel augue.
Curabitur ullamcorper ultricies nisi. Proin at neque et tellus ultricies consequat. Duis vitae mi commodo, suscipit nunc vel, porta tellus.
In eu volutpat sapien. Mauris dignissim velit eget diam tristique, nec egestas magna maximus.
Pellentesque python, lorem a eleifend vehicula, arcu urna facilisis odio, maximus maximus massa nisl sed sapien.
Quisque nisi nunc, dignissim ut malesuada non, fringilla vitae sem. Nunc turpis quam, rutrum at egestas ut, pretium tincidunt est.
Praesent imperdiet mauris eu felis lobortis vehicula. Sed dictum lorem at rutrum rhoncus. Suspendisse sit amet ex ac eros python cursus.
Duis pretium rutrum lacus, sit amet vulputate ipsum condimentum vel. Vivamus lacus ipsum, python in justo quis,
blandit condimentum velit esed semper posuere leo, elementum tristique leo euismod quis
"""

我在这里使用此代码成功删除了字符串中的标点符号。

def remove(element):
    new = ""
    for i in element:
        if i not in "?.!,:;":
            new += i
    print (new)


remove(text)

我也成功地使用此代码删除了字符串中每个单词的最后一个字母。

def last_item(item):

    splitter = item.split()

    print([x[:-1] for x in splitter])



last_item(text)

我现在停留在如何将已删除的值返回到新列表或字符串中。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以将string.puncuation与生成器表达式一起使用以删除标点符号。然后列表推导可以在空格上分割,并从每个单词中抓取最后一个字母。

import string
def clean_string(s):
    return ''.join(i for i in s if i not in string.punctuation)

>>> [word[-1] for word in clean_string(text).strip().split(' ')]
['n', 'o', 'a', 't', 'r', 'n', 'a', 'm', 's', 'e', 's', 't', 's', 's', 't', 'r', 's', 's', 'c', 'm', 's', 's', 'c', 'e', 'u', 'm', 's', 'm', 'a', 't', 'a', 's', 'c', 'e', 'o', 'a', 'l', 't', 'c', 'e', 't', 'u', 'm', 's', 'i', 'l', 'e', 'r', 'r', 's', 'm', 't', 'i', 'm', 's', 'n', 'o', 'a', 't', 'r', 'n', 'a', 'm', 's', 'e', 's', 't', 's', 's', 't', 'r', 's', 's', 'c', 'm', 's', 's', 'c', 'e', 'u', 'm', 's', 'm', 'a', 't', 'a', 's', 'm', 'c', 'e', 'a', 'l', 't', 'c', 'e', 't', 'u', 'm', 's', 'i', 'l', 'e', 'r', 'r', 's', 'i', 'm', 't', 'i', 'm', 'm', 's', 'e', 's', 't', 's', 's', 't', 's', 'r', 's', 's', 'c', 'm', 's', 's', 'c', 'e', 'u', 'm', 'a', 'q', 'a', 'a', 't', 'a', 's', 'm', 'c', 'e', 'o', 'a', 'l', 't', 'c', 'e', 't', 'u', 'm', 's', 'i', 'l', 'r', 'r', 's', 'i', 'n', 't', 'e', 't', 's', 's', 't', 's', 'e', 'i', 'o', 't', 'c', 'l', 'a', 'n', 'u', 't', 'n', 's', 'm', 't', 't', 'm', 'e', 'c', 's', 'a', 'e', 'n', 'm', 'a', 'd', 'a', 'u', 'a', 's', 'o', 's', 's', 'a', 'l', 'd', 'e', 'i', 'c', 'm', 't', 'a', 'n', 'a', 'e', 'm', 'c', 's', 'm', 'm', 't', 's', 't', 'm', 't', 't', 't', 's', 'u', 's', 's', 'a', 'd', 'm', 'm', 't', 'm', 's', 'e', 't', 't', 'x', 'c', 's', 'n', 's', 'm', 'm', 's', 't', 't', 'e', 'm', 'm', 'l', 's', 's', 'm', 'n', 'n', 'o', 't', 'm', 't', 'd', 'r', 'e', 'o', 'm', 'e', 'o', 'd', 's']

答案 1 :(得分:1)

不是最好的方法,但它有效。

new = ""

for i in text:
    if i not in "?.!,:;":
        new += i


print new

x = new.split(' ')

new1 = ""
for i in x:
    print i[-1:]
    new1 += i[:-1]
    new1 += ' '

print new1

答案 2 :(得分:0)

return ''.join([x[-1] for x in splitter]) # as punctuation have been removed as per question.