A. *_*mni 2 python hex hexdump
我一直在开发一个程序,该程序将采用十六进制文件,如果文件名以“CID”开头,那么它应该删除前 104 个字符,在那之后有几个单词。我也想删除单词之后的所有内容,但问题是我想要隔离的部分长度各不相同。
\n\n我的代码目前是这样的:
\n\ny = 0\nimport os\nfiles = os.listdir(".")\n\nfilenames = []\nfor names in files:\n if names.endswith(".uexp"):\n filenames.append(names)\n y +=1\n print(y)\nprint(filenames)\n\nfor x in range(1,y):\n filenamestart = (filenames[x][0:3])\n print(filenamestart)\n if filenamestart == "CID":\n openFile = open(filenames[x],\'r\')\n fileContents = (openFile.read())\n ItemName = (fileContents[104:])\n print(ItemName)\nRun Code Online (Sandbox Code Playgroud)\n\n输入示例文件(从 HxD 中提取):
\n\n.........................\xc3\xbd\xc3\xbf\xc3\xbf\xc3\xbf................E.................!...1AC9816A4D34966936605BB7EFBC0841.....Sun Tan Specialist.................9.................!...9658361F4EFF6B98FF153898E58C9D52.....Outfit.................D.................!...F37BE72345271144C16FECAFE6A46F2A.....Don\'t get burned............................................................................................................................\xc3\x81\xc6\x92*\xc5\xbe\nRun Code Online (Sandbox Code Playgroud)\n\n我已经成功删除了前 104 个字符,但我还想删除“Sun Tan Specialist”之后的字符,这些字符的长度会有所不同,所以我只剩下那部分。
\n\n我感谢任何人能给我的任何帮助。
\n删除字符串中非字母字符的一种方法是使用正则表达式 [ 1 ]。
>>> import re
>>> re.sub(r'[^a-z]', '', "lol123\t")
'lol'
Run Code Online (Sandbox Code Playgroud)
编辑
第一个参数r'[^a-z]'是捕获将删除的内容的模式(此处,通过将其替换为空字符串'')。方括号用于表示类别(该模式将匹配该类别中的任何内容), 是^“非”运算符, 表示a-z所有小型大写字母字符。更多信息请点击这里:
https://docs.python.org/3/library/re.html#regular-expression-syntax
例如,要保留大写字母和空格,则为:
>>> re.sub(r'[^a-zA-Z ]', '', 'Lol !this *is* a3 -test\t12378')
'Lol this is a test'
Run Code Online (Sandbox Code Playgroud)
然而,从您在问题中提供的数据来看,您需要的确切过程似乎比“摆脱非字母字符”要复杂一些。