Преобразувайте низ, съдържащ шестнадесетичен (заедно с други знаци) в двоичен в Python

Имам файл, съдържащ редове от something.something(hexvalue1,hexvalue2)

Опитвам се да конвертирам тези шестнадесетични стойности в двоични. От това, което проучих, разбрах, че ще трябва да търся шестнадесетични стойности във всеки ред и след това да ги конвертирам в двоични. Не съм сигурен как да направя търсенето в низ за шестнадесетични стойности с други променливи в него. Забележка: Всички редове са в един и същи формат.

Когато правя:

for line in file:
    string = line
    string.split('(')

не се разделя на '('


person Ram    schedule 27.11.2012    source източник
comment
Търсите ли аргументи с шестнадесетична стойност към функции? (т.е. работите ли върху изходния код), ако не - какво? Също така, защо искате да направите точно това?   -  person Jon Clements♦    schedule 27.11.2012
comment

Опитайте това - поне за мен използването на system("cd blah blah && blah blah", intern = TRUE) даде Error in system(cmd, intern = T) : 'cd' not found, така че използването на cd отпада - за щастие се използва работната директория, така че можете просто да промените работната директория в R, вместо в системно повикване.

wd <- getwd()
setwd("C:/Users/trinker/Desktop/foo2")
cmd <- '"C:/Program Files (x86)/Git/bin/git.exe" init'
system(cmd, intern = T)
setwd(wd)

Параметърът intern не е необходим, но може да помогне за отстраняване на грешки.

Просто съм благодарен, че обикновено работя на Linux ;)

  -  person Keith    schedule 27.11.2012
comment
Опитвам се да направя това, за да мога да подавам тази стойност на друга система и тази система приема само двоичен вход. Пиша скрипт, който ще вземе входен файл, който ще го анализира и ще отпечата необходимите редове (този с тези шестнадесетични стойности) в изходен файл. Преобразувам шестнадесетичните стойности в изходния файл в двоични и ги присвоявам на две променливи.   -  person Ram    schedule 28.11.2012
comment
Аз съм на стъпка 2. Направих анализ на файла. Имам редовете, преобразувах ги в двоични. Не искам да публикувам целия скрипт във форума, така че просто дадох частта, която ще преобразува шестнадесетичния в двоичен.   -  person Ram    schedule 28.11.2012


Отговори (1)


В Python всички методи на низове връщат нови обекти (те трябват, тъй като низовете са неизменен тип). str.split връща list. Така че, за да анализирате вашия низ, това ще бъде нещо като:

for line in file:
    left,right = line.split('(',1)
    hexvalues = right.split(')')[0]
    hex1,hex2 = hexvalues.split(',')

За тези, които са по-склонни към регулярните изрази:

import re
>>> re.findall(r'\(([^)]+)',"this.is(0xffaabb,0x112214)")
['0xffaabb,0x112214']
person mgilson    schedule 27.11.2012