2015-01-20 4 views
0

как я могу преобразовать строку с этой строкой «70» (с апострофом) до длинногопреобразования строки с апострофом долго (не Int)

кода:

gap = long(x.film_index)- long (expected_film) 

Погрешности: ValueError: недействительный буквально для длинного() с основанием 10: '"70"'

+2

Вы пытались просто лишить апостолов? 'long (x.film_index.strip ('' '))'? –

+1

Также обратите внимание, что 'long' ушел в 3.x, нет никакого вреда в использовании' int' в 2.x или 3.x, как в 2. x автоматически преобразуется в 'long', где это необходимо. –

+0

та же ошибка: ValueError: недействительный литерал для int() с базой 10: '" 70 "' –

ответ

1

Как об удалении котировки сначала используя replace()?

>>> x = '"70"' 
>>> x 
'"70"' 
>>> long(x) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for long() with base 10: '"70"' 

>>> long(x.replace('"', '')) 
70L 
+0

Спасибо, я думаю, что буду использовать этот параметр –

4

strip от кавычек перед конвертированием.

>>> x = "\"70\"" 
>>> long(x.strip("\"")) 
70L 
1

Вы можете использовать регулярное выражение для извлечения только цифры из заданной строки:

import re 
long(re.match(r'\d+', '"70"').group()) 

Однако, если вы знаете, что ваш номер будет всегда окружен " с, то вы можете легко построить новый int от него без первых и последних символов:

long('"70"'.strip('"')) # or long('"70"'.replace('"', '')) 
Смежные вопросы