2010-07-01 6 views
2

Как бы идти о принятии строки:Строка или список подстановки в Python

("h1", "h2", "h3, "h4") 

И Подставив эти значения с номерами 1, 2, 3, 4?

Соответственно, как я мог бы выполнить одну и ту же операцию, кроме как в списке?

+2

Вы говорите о string '" (\ "h1", \ "h2 \", \ "h3 \", \ "h4 \") "'? Или список строк? –

+1

Я не совсем уверен, что вы здесь задаете ... Вы хотите просто удалить ведущий «h» из ваших строк? Или у вас длинная строка и вам нужно заменить все экземпляры «h1» на «1»? – MikeD

ответ

4
to_replace = ["h1","h2","h3","h4"] 
replaced = [ int(s.replace("h","")) for s in to_replace ] 

Если это то, что вы хотите.

Это не совсем понятно; Я предполагаю, что ваш вход буквально не является строкой "(\"h1\", \"h2\", \"h3\", \"h4\")", а содержит список строк.

И я не уверен, что вы имели в виду по второму вопросу, поскольку он кажется таким же, как и первый.

Я буду обновлять мой ответ соответственно =)

+0

To MikeD: Да, в основном это то, что я хочу делать. Чтобы дать некоторый контекст, я пытаюсь перевести R-код на Python, и то, что я пытаюсь сделать, - это построить многомерный массив из 3 строк/списков/все, что содержит 4 элемента в строке/списке. Сначала я предполагаю, что лучше использовать для построения массива: список или строку? Вы должны будете простить мои загадочные описания, потому что я n00b с Python. :) – myClone

+0

Джастину: Прошу прощения за мой непонятный вопрос. Это отчасти потому, что я не уверен, что это за то, что я за ним. У меня есть сценарий R, который я пытаюсь перевести. (Я знаю, что rPy обрабатывает этот материал автоматически, но я пытаюсь изучить Python путем перевода). То, что вы предложили, выглядит близко. В R он читается следующим образом: hClasses <- as.numeric (gsub ("h", "", segmentH)). Я пробовал то, что у вас было, но написал его так: segmentH = ["h1", "h2", "h3", "h4"]
hClasses = [int (s.replace ("h", "")) для s в сегментах H]. Большое спасибо! – myClone

2

Это лишит каждый нечисловой символ (не только h):

>>> s = ["h1", "h2" , "h3" , "h4"] 
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s] 
[1, 2, 3, 4] 

или

>>> s = ["x1", "b2" , "c3" , "h4"] 
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s] 
[1, 2, 3, 4] 
+0

ChristopeD: Спасибо за это альтернативное решение. Это может пригодиться позже в моем сценарии. :) Ценю вашу помощь. – myClone

Смежные вопросы