从字符串中删除标点符号并将其附加到 Python 中的列表
Removing Punctuation from a String and Appending it to a List in Python
我是 python 学习者。试图从字符串列表中删除标点符号并创建一个新列表但失败了。
string_list = ['Jingle Bells.', "Donkey Kong's", "Jumping Jehosophat;"]
strings_modified = []
for s in string_list:
strings_modified.append.str(s).translate(None, string.punctuation)
我收到的错误是:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-316-5c979f5c8af8> in <module>()
2 strings_modified = []
3 for s in string_list:
----> 4 strings_modified.append.str(s).translate(None, string.punctuation)
AttributeError: 'builtin_function_or_method' object has no attribute 'str'
看来你的代码很复杂。如果我们有一个函数 fcn
执行删除操作,我们可以使用 Python 的列表解析来生成输出。
类似于:[fcn(s) for s in string_list]
。现在你只需要写fcn
。
既然你已经知道翻译,我们可以写成
[s.translate(None, string.punctuation) for s in string_list]
正如在对原始 post 的评论中提到的那样,字符串中有一个拼写错误
strings_modified.append.str(s)
一定是
strings_modified.append(str(s))
但由于 translate
方法的签名已在 Python 3 中更改,新版本可能如下所示:
trans_dict = {ord(i):None for i in string.punctuation}
for s in string_list:
strings_modified.append(s.translate(trans_dict))
或者,使用列表理解(更多 Pythonic)
strings_modified = [s.translate(trans_dict) for s in string_list]
您的代码有错别字:
strings_modified.append.str(s).translate(None, string.punctuation)
这就是您遇到的错误,您正试图从一个名为 append 的 'builtin_function_or_method' 中调用一个名为 str 的函数,它没有该方法,因为它不能那样工作!
您的代码应该(可能取决于您的上下文)是:
strings_modified.append(str(s).translate(None, string.punctuation))
我是 python 学习者。试图从字符串列表中删除标点符号并创建一个新列表但失败了。
string_list = ['Jingle Bells.', "Donkey Kong's", "Jumping Jehosophat;"]
strings_modified = []
for s in string_list:
strings_modified.append.str(s).translate(None, string.punctuation)
我收到的错误是:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-316-5c979f5c8af8> in <module>()
2 strings_modified = []
3 for s in string_list:
----> 4 strings_modified.append.str(s).translate(None, string.punctuation)
AttributeError: 'builtin_function_or_method' object has no attribute 'str'
看来你的代码很复杂。如果我们有一个函数 fcn
执行删除操作,我们可以使用 Python 的列表解析来生成输出。
类似于:[fcn(s) for s in string_list]
。现在你只需要写fcn
。
既然你已经知道翻译,我们可以写成
[s.translate(None, string.punctuation) for s in string_list]
正如在对原始 post 的评论中提到的那样,字符串中有一个拼写错误
strings_modified.append.str(s)
一定是
strings_modified.append(str(s))
但由于 translate
方法的签名已在 Python 3 中更改,新版本可能如下所示:
trans_dict = {ord(i):None for i in string.punctuation}
for s in string_list:
strings_modified.append(s.translate(trans_dict))
或者,使用列表理解(更多 Pythonic)
strings_modified = [s.translate(trans_dict) for s in string_list]
您的代码有错别字:
strings_modified.append.str(s).translate(None, string.punctuation)
这就是您遇到的错误,您正试图从一个名为 append 的 'builtin_function_or_method' 中调用一个名为 str 的函数,它没有该方法,因为它不能那样工作!
您的代码应该(可能取决于您的上下文)是:
strings_modified.append(str(s).translate(None, string.punctuation))