それぞれに1年とテキストが含まれる複数の文字列があります。 1つの文字列の例は、"The year is 2004"
です。しかし、別の文字列は次のようになります"this was made in 2003.5"
。このように多くの文字列をチェックして正しい数字を抽出するにはどうすればよいですか?文字列を検索して異なる種類の数字を検索する方法
答えて
あなたはここにregex
を使用することができます。
>>> str = "The year is 2004"
>>> re.findall(r"[-+]?\d*\.\d+|\d+", str)
['2004']
>>> str = "this was made in 2003.5"
>>> re.findall(r"[-+]?\d*\.\d+|\d+", str)
['2003.5']
あなたは正規表現を使用することができます。
>>> re.findall(r'\d+(?:\.\d+)?', 'year is 2004')
['2004']
>>> re.findall(r'\d+(?:\.\d+)?', 'this was made in 2003.5')
['2003.5']
あなたが「正しい」数のあなたの定義に合うように調整するに正規表現を微ことができます。例えば、これは、指定された文字列内のすべての数値が得られます。数字のあなたのタイプの
あなたの解決策では、これは私にre.findall(r '\ d +(?:\ d \)+?)、1年目は2004年です) '[' 1 '、' 2004 ']' – SRC
はい、 OPが望んでいるものは明確ではないので、これは一つの可能性です。あなたが1を望んでいなければ、正規表現を '\ b \ d +(?:\。\ d +)?\ b'に変更することができますが、OP問題の正確な要件を知らなくても正確な正規表現を与えることはできません。 –
も動作します:
def find_number(my_string):
for element in my_string.split():
try:
return int(element)
except ValueError:
try:
return float(element)
except ValueError:
pass
my_string = "The year is 2004"
number = find_number(my_string)
これはあなたの両方の例については、右の出力が得られます。
リストの内包を使用し、他の人が何であるかを知らなくても、前述のように正規表現
def convert(e):
try:
return float(e)
except:
return None
str = "the 1st year is 2004"
m = [e for e in str.split(" ") if len(e) >= 4 and convert(e)]
print m
>>> ['2004']
を使用していない「正しい」の数は、すべてのユースケースに合った答えを与えることは困難です。しかし、私はここで正しい数字は4桁以上の長さであると仮定しました
- 1. TFSで検索文字列をエスケープする方法コード検索
- 2. セルを検索して文字列を検索する
- 3. 検索文字列を使用してセルを検索する
- 4. VSプロジェクトを検索して文字列を検索するユーティリティ
- 5. データベース内の(類似した)文字列を検索するスケーラブルな方法
- 6. ルビー:複数の検索語の文字列を検索し
- 7. 検索の種類
- 8. 文字列内の数字の検索
- 9. 検索文字列
- 10. 検索文字列
- 11. 異なる時制の文字列を検索するには?
- 12. UNIXを使用して文字列を検索する方法
- 13. 文字列の検索方法
- 14. Netbeansの検索オプションで「*」を文字列として検索
- 15. 文字列内の文字を検索
- 16. 文字列の文字列の検索
- 17. 検索文字列が数字
- 18. 文字列のdjango検索文字列
- 19. 異なる言語コードの文字列を検索する方法
- 20. Python - 文字列内の複数の文字を検索する方法
- 21. VB.Net文字列を検索
- 22. サイクリック文字列を検索
- 23. MySQL検索文字列を
- 24. PostgreSQL全文検索サブ文字列を使って検索
- 25. tsqlで類似の文字列を検索する
- 26. 検索エンジンのようなjava文字列検索の構文
- 27. DirectoryInfoの文字列を検索する
- 28. 数字の2桁を検索して文字列に戻す方法は?
- 29. 部分検索文字列で連絡先を検索する
- 30. WebViewで単語と文字を検索して検索する
最初に "正しい"番号とみなすものを定義してください。 4桁の数字?範囲内の任意の4桁の数字(1900,2100)?他に何か? –