python - 列表和字符串问题
问题描述
我想删除有问题的 test_data 列表元素,其中包含 bad_characters 和固定字符以附加到新列表 stripped_test_data 但脚本不起作用。
以下代码:
test_data = ["1912", "1929", "1913-1923",
"(1951)", "1994", "1934",
"c. 1915", "1995", "c. 1912",
"(1988)", "2002", "1957-1959",
"c. 1955.", "c. 1970's",
"C. 1990-1999"]
bad_chars = ["(",")","c","C",".","s","'", " "]
def strip_characters(data):
stripped_test_data = []
for each in data:
if bad_chars in each:
tostr = str(each)
adjusted = tostr.replace(bad_chars, "")
stripped_test_data.append(tostr)
else:
adjusted = each
stripped_test_data.append(each)
return stripped_test_data
adjsuted_data = strip_characters(test_data)
运行时抛出错误:
> > TypeErrorTraceback (most recent call last) <ipython-input-1-d9d5a3a4542a> in <module>()
> 20 return stripped_test_data
> 21
> ---> 22 adjsuted_data = strip_characters(test_data)
> 23
> 24
>
> <ipython-input-1-d9d5a3a4542a> in strip_characters(data)
> 11 stripped_test_data = []
> 12 for each in data:
> ---> 13 if bad_chars in each:
> 14 tostr = str(each)
> 15 adjusted = tostr.replace(bad_chars, "")
TypeError: 'in <string>' requires string as left operand, not list
你能帮忙看看代码有什么问题以及如何进行操作吗?
解决方案
str.strip
可以处理多个字符:
bad_chars_joined = ''.join(bad_chars)
[t.strip(bad_chars_joined) for t in test_data]
输出:
['1912',
'1929',
'1913-1923',
'1951',
'1994',
'1934',
'1915',
'1995',
'1912',
'1988',
'2002',
'1957-1959',
'1955',
'1970',
'1990-1999']
推荐阅读
- android - 无法使用 html 标签解析 json 响应
- java - 如何在 Hibernate 中将查询超时设置为小于 1 秒?
- tensorflow - TensorFlow 中稀疏卷积的替代实现
- javascript - ReactSelect - 允许区分大小写的可创建选项
- c# - 测试 MVC 控制器方法的属性数量
- json - 使用 filebeat 记录 - 将 JSON 提取到 ES 文件
- javascript - 如何创建具有自定义模板但功能相同的 Vue 组件而不重复自己?
- flutter - 如何使用 Flutter for Web 从本地文件中读取内容?
- powershell - 如何通过 Powershell 在 Windows 容器中使用环境变量
- c++ - 如何在 Leap Motion 上检测用于相机校准的棋盘?