python - 从字典列表中的字符串编号中删除逗号(,)
问题描述
我有一个字典列表:: 示例数据:: 像这样我有 n 个数据。
datas = [{"_id":"1234as", "Total students":"123,321", "TotalPresent":"321,345"},
{"_id":"1234asas","TotalStudents":"343,431","TotalPresent":"541,656"}]
我试过了
for data in datas:
for i in data.values():
re.sub('[^A-Za-z0-9]+', '', i)
datas.append(i)
我只想从 TotalStudents 和 TotalPresent 中删除逗号(,)并替换数据中的值。
编辑 1
在我的字典列表中,我还具有以下价值:
datas = [{"_id":"1234as","Totalstudents":"123,321","TotalPresent":"321,345"},
{"_id":"1234asas","TotalStudents":"343,431","TotalPresent":"541,656"},
{"_id":"9934 asas","TotalStudents":"NA","TotalPresent":""}]
在这里,TotalStudents 键中的值为“NA”,TotalPresent 为“”。有没有办法将出现的“NA”或“”替换为“0”。
解决方案
您可以遍历字典中的键、值对。删除逗号后,替换该键的值。
import re
datas = [{"_id": "1234as", "Total Students": "123,321", "TotalPresent": "321,345"},
{"_id": "1234asas", "TotalStudents": "343,431", "TotalPresent": "541,656"}]
for data in datas:
for key, value in data.items():
print(key, value)
value = re.sub('[^A-Za-z0-9]+', '', value)
data[key] = value
print(datas)
结果
_id 1234as
Total Students 123,321
TotalPresent 321,345
_id 1234asas
TotalStudents 343,431
TotalPresent 541,656
[{'_id': '1234as', 'Total Students': '123321', 'TotalPresent': '321345'},
{'_id': '1234asas', 'TotalStudents': '343431', 'TotalPresent': '541656'}]
这是一种使您的代码正常工作的方法,因此总是替换所有值。如有必要,您需要添加自己的检查以使其更智能。
编辑
为了捕捉“NA”和“”值,我添加了一些 if 语句。它很简单,并且与您自己的代码保持接近。
import re
datas = [{"_id":"1234as","TotalStudents":"123,321","TotalPresent":"321,345"},
{"_id":"1234asas","TotalStudents":"343,431","TotalPresent":"541,656"},
{"_id":"9934 asas","TotalStudents":"NA","TotalPresent":""}]
for data in datas:
print(data)
for key, value in data.items():
if key == "TotalStudents":
if value == "NA":
value = "0"
else:
value = re.sub('[^A-Za-z0-9]+', '', value)
elif key == "TotalPresent":
if not value:
value = "0"
else:
value = re.sub('[^A-Za-z0-9]+', '', value)
data[key] = value
print()
for data in datas:
print(data)
结果
{'_id': '1234as', 'TotalStudents': '123321', 'TotalPresent': '321345'}
{'_id': '1234asas', 'TotalStudents': '343431', 'TotalPresent': '541656'}
{'_id': '9934 asas', 'TotalStudents': '0', 'TotalPresent': '0'}
为了使代码更高效,您可以将新值直接放在数据中。在这种情况下,您不再将“_id”替换为它自己的值。
import re
datas = [{"_id":"1234as","TotalStudents":"123,321","TotalPresent":"321,345"},
{"_id":"1234asas","TotalStudents":"343,431","TotalPresent":"541,656"},
{"_id":"9934 asas","TotalStudents":"NA","TotalPresent":""}]
for data in datas:
print(data)
for key, value in data.items():
if key == "TotalStudents":
if value == "NA":
data[key] = "0"
else:
data[key] = re.sub('[^A-Za-z0-9]+', '', value)
elif key == "TotalPresent":
if not value:
data[key] = "0"
else:
data[key] = re.sub('[^A-Za-z0-9]+', '', value)
print()
for data in datas:
print(data)
推荐阅读
- typescript - 如何在组件中使用 Angular 6 类装饰器?
- react-native - React-Native:如何在动画期间滚动时禁用 TouchableHighlight?
- javascript - 使用 jquery 在固定位置上可拖动和调整大小的 Div 元素
- angular - 如何将 http 请求响应映射到我在 TypeScript 中定义的对象
- android-graphview - 如何在 Android 的 GraphView 中更改 X 和 Y 轴数字的颜色?
- prepros - 我可以更改 Prepros 实时预览的服务器根目录吗?
- r - R - 返回 # 而不是 ifelse 上的文本
- html - Safari 中带有 alpha chanel 的 HTML5 视频
- bash - 从bash中的另一个函数中调用一个函数
- spring - 带有@ModelAttribute 的变量是否从请求参数中填充?