문제는 다음과 같다 :
다음과 같이 내가 선 같은 file.read (100)과 점점 뭔가를하고 있어요 :파이썬
line='1\x01\x1e17=00000000\x1e54=80300A00\x1e50=1\x1e56=2008080106010414\x1c\x1e247=CD\x1e6=In\x1e5=Boot\x1e180=0.445\x1e179=0.380\x1e55=AAA\x1e57=2008080100000000\x1e212=5000\x1e213=20000\x1e115=500\x1d\x1e29=5T2lqZHNAwg=\x01\x1e17=00000000'
내가 원하는 것은 이 행에서 16 진수를 검색하고 새로 조작 된 행을 출력하도록 변환하십시오.
그래서 기본적으로 내가하고 싶은 것 :
t=re.findall(r'[\x80-\xff]', line) #Somehow get the positions
for i in t: ord(i) #Something to this effect to replace all the hexadecimals it finds
, 내가 라인에서 혼자 자신의 위치를 수 있도록 모든 문자를 찾을 수 없습니다 내가 t에 대해 가지고있는 코드를 사용.
누구든지이 문제에 최선의 방법을 생각해 본다면 궁금합니다. 감사.
단계를 백업하고 해당 입력이 적합한 지 묻는 것이 좋습니다. 잘못된 인코딩으로 파일을 읽으려고하는 것 같습니다. –
파일은 .dat.gz입니다. 유닉스에서는 ^^ 등의 특수 문자가 많이 있습니다. 독서를하는 유일한 방법은 gzip을 사용하고 읽는 것입니다. 인코딩에 대한 더 이상의 생각이 있습니까? – FancyDolphin
'\ x80- \ xff' 범위의 문자를 찾고 있지만 문자열의 문자가'\ x01- \ x1f' 범위에 있습니다. 정규 표현식 파서가 어떻게 처리 할 지 모르겠지만 시작해야 할 곳입니다. –