Python を使用して、数字の後に他の文字が続く文字列を int に解析するにはどうすればよいですか? 私が解決しようとしている特定の問題は、数字とそれに続く任意の量の他の文字を含む文字列から最初の数字を解析することです。これには、おそらく他の数字も含まれますが、これには興味がありません。
たとえば、文字列が の場合、を整数"12//1"
にする必要があります。12
Python を使用して、数字の後に他の文字が続く文字列を int に解析するにはどうすればよいですか? 私が解決しようとしている特定の問題は、数字とそれに続く任意の量の他の文字を含む文字列から最初の数字を解析することです。これには、おそらく他の数字も含まれますが、これには興味がありません。
たとえば、文字列が の場合、を整数"12//1"
にする必要があります。12
文字列内の数字を抽出する場合:
int(''.join(c for c in s if c.isdigit()))
この正規表現を使用します。
import re
try:
print int(re.compile("(\d+)").match('12//').group(1))
except:
print "there was no number"
すべての数字を抽出し、数字以外の最初の文字で停止します。
\d
は 1 桁を\d+
意味し、少なくとも 1 桁に一致することを意味し、(\d+)
一緒にするとグループ 1 で見つかったものを返すことを意味します。
の仕事のようですitertools.takewhile
:
>>> from itertools import takewhile
>>> s = '12//'
>>> int(''.join(takewhile(str.isdigit, s)))
12
これは一種のクールなテクニックですが、あなたが説明した形式だけである場合、これだけではやり過ぎかもしれません:
import string
potential_bad_characters = string.ascii_puctuation + string.ascii_letters
int(my_string.translate(None,potential_bad_characters ))
#Or
int(mystring.rstrip(potential_bad_characters))
#Or
int(filter(str.isdigit,my_string))
#Or (kudos @JonClements)
potential_bad_characters = ''.join(map(chr, range(256))).replace('0123456789', '')
...