Снятие шестнадцатеричного кода из текстового файла в Python [дубликат]

Если у вас есть базовый класс A и производный класс B, вы можете сделать следующее.

void wantAnA(A myA)
{
   // work with myA
}

B derived;
// work with the object "derived"
wantAnA(derived);

Теперь для метода wantAnA нужна копия derived , Однако объект derived не может быть полностью скопирован, так как класс B может изобретать дополнительные переменные-члены, которые не находятся в его базовом классе A.

Поэтому, чтобы вызвать wantAnA, компилятор будет «срезать» все дополнительные члены производного класса. Результатом может быть объект, который вы не хотите создавать, потому что

  • он может быть неполным,
  • ведет себя как объект A (все особые поведения класс B теряется).
76
задан brasofilo 19 September 2013 в 00:23
поделиться

5 ответов

139
ответ дан pts 21 August 2018 в 15:37
поделиться

Без RE (который, как я предполагаю, вы хотите):

def remafterellipsis(text):
  where_ellipsis = text.find('...')
  if where_ellipsis == -1:
    return text
  return text[:where_ellipsis + 3]

или с RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)
7
ответ дан Alex Martelli 21 August 2018 в 15:37
поделиться
  • 1
    Можете использовать sep = '...' как kwarg и использовать len (sep) вместо жесткого кодирования 3, чтобы сделать его немного более надежным в будущем. – cdleary 24 May 2009 в 23:49
  • 2
    Да, но тогда вам нужно перекомпилировать RE для каждого вызова, так что производительность страдает для решения RE (нет реальной разницы для решения без RE). Некоторая общность бесплатна, некоторые не ... ;-) – Alex Martelli 24 May 2009 в 23:56
  • 3
    – Ayman Hourieh 25 May 2009 в 00:09
59
ответ дан Ayman Hourieh 21 August 2018 в 15:37
поделиться

другой простой способ с использованием re будет

import re, clr

text = 'some string... this part will be removed.'

text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)

// text = some string
0
ответ дан Baris Demiray 21 August 2018 в 15:37
поделиться
8
ответ дан theannouncer 21 August 2018 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: