一点说明:

  • 由于处理see信息的模式字符串过于复杂,而且耗费精力,此处仅仅使用了字典来进行处理,而且也没有分清楚每个数字具体的物理意义。最后将字典格式的json文件写入了文件。可以使用format()函数来进行字符串格式化

涉及知识点:

  • 文件读写
  • 深拷贝

    向list之中添加字典对象的实现方式是拷贝一份原对象的引用过去,也就是浅拷贝,为了实现在list之中添加多条同字典信息,需要实现字典对象的深拷贝,也就是使用copy.deepcopy(obj)方法

  • 字符串处理的split方法
from ctypes import string_at
import json
import re
from turtle import right#其实也可以将这些样例字符串放入到文件或者数组之中,懒得做了
originString ="(hear 1022 -30 passto(23,24))(see 1022 ((ball) -20 20 1 -2) ((player hfut 2) 45 23 0.5 1 22 40 )((goal r) 12 20) ((Line r) -30))"
originString2 = "(see 2022 ((player hfut2 8) 40 23 1 6 21 33)((goal r) 15 30)((f r t 20)5 24))(hear 2022 -10 “passball”)"
originString3 = "(see 2023 ((player hfut2 8) 10 20 1 2 6 8)((player hfut1 9) 6 7 8 10 20 3)((f r t 10) 15 20))(hear 2023 10 “dash”)"#标准信息格式的定义
seeBallInfo = {"ballDirection":'',"ballDistance":'',"ballDistChng":'',"ballDirChng":'',}
seePlayerInfo = {"player":'',"playerDirection":'',"playerDistance":'',"playerDistChng":'',"playerDirChng":'',"playerBodyDir":'','playerHeadDir':''
}
seeFlagInfo = {"flag":'','flagDirection':'',"flagDistance":''
}
seeLineInfo = {"line":'',"lineDistance":''
}
seeGoalInfo = {'goal':'','goalInfo':''
}#该字典用于存储看见的信息,infos为list类型,用来存储数量不定的信息
InfoDict = {'time':' ','infos':[]
}def splitStr(str):'''* 该方法可以实现将服务器传来的信息分割成hear和see两部分.* 参数:string,服务器传来的字符串* 返回值:[hear,see],list中第一个元素是hearInfo,the orther one is seeInfo'''leftBarcket = 0rightBarcket = 0stack = []for i in range(len(str)):if (rightBarcket == leftBarcket and rightBarcket!=0):breakelse:if (str[i]=='(' or str[i] == '['):leftBarcket+=1elif(str[i]==')' or str[i] == "]"):rightBarcket+=1stack.append(str[i])finalStr = ''while(len(stack) != 0):finalStr+=stack.pop(0)secondInfo = str.replace(finalStr,'')# return [finalStr,secondInfo]if(finalStr.count('see')):return [secondInfo,finalStr]else:return [finalStr,secondInfo]def infoProcess(str):if('hear' in str):hear = str[1:-1]hear = hear.split(' ')hearInfo = '在第'+hear[1]+'周期'+hear[0]+'到了来自'+hear[-2]+'方向的消息:'+hear[-1]print(hearInfo)#将信息写入文件with open('hear.txt','w',encoding='utf-8') as fileobject:fileobject.write(hearInfo)elif ('see' in str):tempStore = ''   #临时存储leftBarckt = 0rightBarcket = 0str = str[1:-1]   #首先去除两侧括号for i in range(len(str)):print(i)            #碰到的第一个数字是周期数#第四五六七位必然为周期,继续使用切片,此过程仅仅循环一次if(i<4):continueelif(i>3 and i<8):InfoDict['time']+=str[i]elif(str[i] == '('):#将see和time信息清除leftBarckt+=1elif(str[i] == ')'):rightBarcket+=1if(leftBarckt == rightBarcket and leftBarckt!=0):if ('player' in tempStore):strArray = tempStore.split(' ')seePlayerInfo['player'] = strArray[0]+' '+strArray[1]+' '+strArray[2]#至于那个位置的信息具体是什么,这个没有仔细区分seePlayerInfo['playerBodyDir'] = strArray[3]seePlayerInfo['playerDirChng'] = strArray[4]seePlayerInfo['playerDirection'] = strArray[5]seePlayerInfo['playerDistance'] = strArray[6]seePlayerInfo['playerDistChng'] = strArray[7]seePlayerInfo['playerHeadDir'] = strArray[8]#还有一点要实现深拷贝InfoDict['infos'].append(copy.deepcopy(seePlayerInfo))# seePlayerInfo.clear()elif ('ball' in tempStore):strArray = tempStore.split(' ')seeBallInfo['ballDirChng'] = str[1]seeBallInfo['ballDirection'] = str[2]seeBallInfo['ballDistance'] = str[3]seeBallInfo['ballDistChng'] = str[4]InfoDict['infos'].append(copy.deepcopy(seeBallInfo))# seeBallInfo.clear()elif ('goal' in tempStore):strArray = tempStore.split(' ')seeGoalInfo['goal'] = strArray[0]seeGoalInfo['goalInfo'] = strArray[1]+strArray[2]InfoDict['infos'].append(copy.deepcopy(seeGoalInfo))elif('Line' in tempStore):strArray = tempStore.split(' ')seeLineInfo['line'] = strArray[0] + strArray[1]seeLineInfo['lineDistance'] = strArray[2]InfoDict['infos'].append(copy.deepcopy(seeLineInfo))elif (tempStore.startswith('f')):strArray = tempStore.split(' ')seeFlagInfo['flag'] = strArray[0] +" "+ strArray[1]+" "+strArray[2]+" "+strArray[3]seeFlagInfo['flagDirection'] = strArray[4]seeFlagInfo['flagDistance'] = strArray[-1]InfoDict['infos'].append(copy.deepcopy(seeFlagInfo))tempStore = tempStore.replace(tempStore,'') #说明一组信息已经结束,将其置空else:tempStore+=str[i]print(InfoDict) with open('seeInfo.txt','w',encoding='utf-8') as fileobject:fileobject.write(json.dumps(InfoDict))

合工大机器人技术第一次个人作业相关推荐

  1. 合工大 机器人技术 作业

    共四次作业报告,CSDN下载:下载链接 作业内容: <机器人技术>第一次作业 题目: 在机器人足球比赛中,server和球员client之间通过发送字符串来进行信息交互,其中server要 ...

  2. 合工大机器人技术第四次作业

    仿真 足球机器人 第四次作业 决策树 该实例中总共有12个对象,6个类为"是",6个类为"否" I(p,n)=-(6/12)log2(6/12)-(6/12)l ...

  3. 移动开发技术第一次大作业

    移动开发技术第一次大作业 ​ --门户界面设计 开发关键步骤: ①页面设计: 主界面设计(由上中下三层界面组成) 顶部界面设计: 底部界面设计: 中层界面使用framelayout用于容纳四个frag ...

  4. ROS机器人技术课程大作业,机器人基础实例

    一.话题与服务编程: 通过代码新生一只小海龟, 放置在(5.5,5.5)点, 命名为 "JerryXXXX": 通过代码订阅JerryXXXX的实时位置并在终端打印: 编程控制Je ...

  5. 合工大机器人足球仿真robocup2D球队代码实验七实验验收

    //这是2020年某上海第一建筑施工队亚军球队代码,仅供参考 /* Copyright (c) 2000-2003, Jelle Kok, University of Amsterdam All ri ...

  6. 合工大机器人足球仿真考试题56题(底层uva)

    题目要求 //拿球后行为,利用已有 Worldmodel(21) (1)在 playOn 模式下,拿到球以后朝前方快速带球. (2)在 PlayOn 模式下,拿到球以后朝球门方向慢速带球. (3)在 ...

  7. 合工大Java第四次作业第五题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 题目描述 一.题目分析 二.难点及解决方案 1.文件读取出的字符串是一整行的数据,包含了学生的姓名.学号和成绩,如何处理数据 ...

  8. 合工大php期末试卷_完美起航-合肥工业大学机器人技术作业和实验

    简介 你好! 在这篇文章中,我将免费共享合肥工业大学<机器人技术>作业和实验环节的代码和个人报告,以供交流学习.为了方便更多的同学搜索到这篇博客,我会在下面贴出一部分实验题目. 共享资源包 ...

  9. 合肥工业大学机器人技术期末_合肥工业大学 机器人技术 作业和实验

    简介 你好! 在这篇文章中,我将免费共享合肥工业大学<机器人技术>作业和实验环节的代码和个人报告,以供交流学习.为了方便更多的同学搜索到这篇博客,我会在下面贴出一部分实验题目. 共享资源包 ...

最新文章

  1. Server2008 RMS測試
  2. php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
  3. matlab模块 python,Matlab 和Python结合使用
  4. SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送)
  5. 六十六、实现Vue项目首页轮播图(vue-awesome-swiper)
  6. 深度学习(四十三)——深度强化学习(6)AlphaGo全系列
  7. 华为机试——合并表记录
  8. leetcode 【 Add Two Numbers 】 python 实现
  9. matlab2c使用c++实现matlab函数系列教程-sort函数
  10. css怎么设置图片显示圆角,关于在css里设置图片圆角的问题
  11. sikuli+eclipse对于安卓app自动化测试的应用(第一次写博客,有些语言还不太专业,望海涵)...
  12. bootcamp空间不足_Bootcamp安装WindowsXP补丁时C盘空间不足的解决措施
  13. mysql 更新某个字段值_怎么对mysql数据表中的某个字段的所有数据修改
  14. 智能家居十大必备功能 乐享真正智能生活
  15. 〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!
  16. 平衡搜索树中的左单旋右单旋双旋
  17. windows无法连接到user profile service服务。此问题阻止标准用户登录系统
  18. 【线性代数】4-2:投影(Porjections)
  19. n皇后问题回溯法-迭代实现
  20. mybatis运行报错java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

热门文章

  1. Bash脚本的空格和“期待一元表达式”错误
  2. 九星连珠,众大神归位
  3. 为什么计算机播放音乐不响,酷狗音乐开启以后为什么点选播放没有声音
  4. 燕山大学操作系统-API的应用(U盘设计)
  5. Jupyter Notebook输出表格格式化(自动对齐)
  6. boost库之noncopyable类
  7. 直播延时卡顿问题如何解决?《超低延时直播白皮书》重磅上线!
  8. 亚马逊云科技亮相服贸会并发布在中国的第二个可再生能源项目;耀世星辉CheerCar正式接入腾讯车联系统 | 全球TMT...
  9. Android 华为 桌面图标适配(显示未读数目)
  10. 厦大C语言上机 1489 变与不变