Python, выбирающий игнорирование строкового значения - PullRequest
0 голосов
/ 03 марта 2011

Используя Python v2, есть ли способ игнорировать значение в строке, если оно есть?

Например: я хочу, чтобы кто-то ввел значение в $ 100,00, или он мог бы ввести значение в 100,00 без начального символа $. То, что я хочу сделать, это игнорировать значение '$', если оно набрано.

Любой толчок в правильном направлении приветствуется.

Ответы [ 6 ]

2 голосов
/ 03 марта 2011

Может быть

s = "  $100.00 "
f = float(s.strip().lstrip("$"))

.strip() удаляет пробелы из начала и конца строки, а .lstrip("$") убирает знак доллара с начала, если имеется.

1 голос
/ 03 марта 2011

Если вы хотите удалить только '$', тогда s.replace('$', '') действительно захочет, чтобы вы захотели.

Если вы хотите заменить более одного символа, вам нужно объединить вызовы замены вместе, что оченьочень быстро, и в этом случае одно из других решений, вероятно, лучше.

1 голос
/ 03 марта 2011

Просто отфильтруйте нежелательные символы из строки. Есть несколько способов сделать это, для ясности вы можете использовать:

def clean(s, wanted = "0123456789."):
  """Returns version of s without undesired characters in it."""
  out = ""
  for c in s:
    if c in wanted:
      out += c
  return out

Чтобы избежать динамического построения строк, которое является дорогостоящим, вы можете создать список, а затем превратить список в строку:

def clean2(s, wanted = "0123456789."):
  outlist = [c for c in s if c in wanted]
  return "".join(outlist)
0 голосов
/ 03 марта 2011
a = "$100.00"
b = ''.join((c for c in a if c != "$"))

конечно, это разумно, если вы не знаете положение персонажа, которого хотите удалить

0 голосов
/ 03 марта 2011

Просто lstrip $ из строки перед обработкой.

value = ...
value = value.lstrip( ' $' ) # Strip blank and $
0 голосов
/ 03 марта 2011

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

Или вы можете быть ленивым, если вы просто хотите удалить ведущий $:

if s.startswith('$'):
    s = s[1:]

Если вы хотите удалить несколько $ знаков, замените if на while или используйте s = s.lstrip('$')

PS: Возможно, вы захотите удалить и конечные знаки $. rstrip() или endswith() и s[:-1] ваши друзья в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...