我有一个挑战,我试图使用split.strings
来解决,但似乎不是按照我需要的方式设计不可变字符串,但主要是为了删除空格和单个字符。我也尝试过正则表达式,但由于它们在我目前的python课程中没有到期几周,我对它们的工作方式有点困惑(虽然我知道它们的基础知识)。
所以,我有一个JSON文件,它显示工厂的机器和人员数据,我需要解析机器数据,与设施内收集的人员数据分开。转换JSON文件并选择所需的数据是有效的,但在其中一个名为name
的参数中,需要将人员和机器信息混合在一起。以下是两个分支的示例:
"id": "b4994c877c9c",
"name": "forklift_0001", # here is the machine
"areaId": "Tracking001",
"areaName": "Ajoneuvo",
"color": "#FF0000",
"coordinateSystemId": "CoordSys001",
"coordinateSystemName": null,
"covarianceMatrix": [
"id": "b4994c879275",
"name": "guest_0001", # here is a person
"areaId": "Tracking001_2D",
"areaName": "staff1",
"color": "#CCFF66",
"coordinateSystemId": "CoordSys001",
"coordinateSystemName": null,
"covarianceMatrix": [
我需要转换的代码如下:
for f in file_list:
print('Input file: ' + f) # Replace with desired operations
with open(f, 'r') as f:
distros = json.load(f)
output_file = 'Output' + str(output_nr) + '.csv'
with open(output_file, 'w') as text_file:
for distro in distros:
print(distro['name'] + ',' + str(distro['positionTS']) + ',' + str(distro['position']), file=text_file)
那么我需要在distro['name']
数组(它是一个数组吗?)中做的是通过500k行并要求它删除任何不是叉车,起重机,机器,等等,只留下它们(后面则相反),这是我无法弄清楚的。
所有帮助都非常感谢。
答案 0 :(得分:2)
据我了解你的问题,你想给每个条目一个标记'机器'或者' person',基于" name"标签
分配这样的标志(或者只是直接写入适当的文件)可以用例如
之类的东西来完成with open(file1, 'w') as _file1, open(file2, 'w') as _file2, open(file3, 'w') as _file3:
for distro in distros:
yourstring = distro['name'] + ',' + str(distro['positionTS']) + ',' + str(distro['position'])
if distro['name'].startswith(('forklift','crane',...)):
_file1.write(yourstring)
elif distro['name'].startswith(('guest','employee',...)):
_file2.write(yourstring)
else:
_file3.write(yourstring)
已经打开一起写入的三个文件将包含最后的所有条目,在机器,人员和两者之间分开。
这会解决您的问题吗?