Как преобразовать числовую строку с запятыми в целое число? - PullRequest
7 голосов
/ 22 февраля 2010

В Python, что является чистым и элегантным способом преобразования строк типа «1 374» или «21 000 000» в значения типа int, например 1374 или 21000000?

Ответы [ 4 ]

9 голосов
/ 22 февраля 2010

Это действительно зависит от того, откуда вы получили свой номер.

Если число, которое вы пытаетесь преобразовать, получено из пользовательского ввода, используйте locale.atoi(). Таким образом, число будет проанализировано таким образом, чтобы это соответствовало настройкам пользователя и, следовательно, ожиданиям.

Если, с другой стороны, вы читаете его, скажем, из файла, который всегда использует один и тот же формат, используйте int("1,234".replace(",", "")) или int("1.234".replace(".", "")) в зависимости от вашей ситуации. Это не только проще для чтения и отладки, но и не зависит от настроек локали пользователя, поэтому ваш парсер будет работать в любой системе.

4 голосов
/ 22 февраля 2010

locale.atoi(), после установки соответствующей локали.

2 голосов
/ 22 февраля 2010
>>> s="1,374"
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, '')
'en_US.UTF-8'
>>> locale.atoi(s)
1374
2 голосов
/ 22 февраля 2010
int("1,374".replace(",",""))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...