4
A
回答
9
3
我會使用一個try-except塊來確定它是否是一個數字。這樣,如果s是一個數字,那麼演員就會成功,如果不是,你就會捕獲ValueError,這樣你的程序就不會中斷。
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
+1
既然你解釋得最多,你的答案就更好了!謝謝你,邁克爾和亨特! – Marko
2
您也可以從字符串中提取數字。
import string
extract_digits = lambda x: "".join(char for char in x if char in string.digits + ".")
然後將它們轉換爲浮點。
to_float = lambda x: float(x) if x.count(".") <= 1 else None
>>> token = "My pants got 2.5 legs"
>>> extract_digits(token)
'2.5'
>>> to_float(_)
2.5
>>> token = "this is not a valid number: 2.5.52"
>>> extract_digits(token)
'2.5.52'
>>> to_float(_)
None
1
邁克爾·巴伯的回答將是最適合的速度,因爲沒有不必要的邏輯。如果由於某種原因,您發現需要進行更精細的評估,則可以使用Python標準庫的正則表達式模塊。例如,如果您決定獲得一個像您所描述的數字,但是您想要添加其他標準,這將對您有所幫助。
import re
mystring = '.0323asdffa'
def find_number_with_or_without_decimal(mystring):
return re.findall(r"^\.?\d+", mystring)
In [1]: find_number_with_or_without_decimal(mystring)
Out[1]: ['.0323']
正則表達式說,「找到的東西,最多到小數點後開始(」 ^「是指只在線的開始‘?’意味着高達一;小數被轉義以」 \ '所以它不會有'任何字符'的特殊正則表達式含義)並且有任意數量的數字。祝你好運!
2
爲什麼不爲此內置.isdigit()
。結構緊湊,無try
語句和超快:
string = float(string) if string.isdigit() else string
當考慮誤差在Python處理,我相信這是尤達大師誰說,「有沒有嘗試做或不做。」
相關問題
- 1. Python:檢查字符串中的字符
- 2. 在Python中檢查兩個字符串?
- 3. python:檢查子字符串是否在字符串元組中
- 4. Python字符串檢查
- 5. 如何在Python中檢查字符串是否有數字值?
- 6. 在Oracle中檢查字符串中的數字和字符11G
- 7. 在VBScript中檢查字符串中的非數字字符
- 8. Python:字符串中的字符串檢查失敗
- 9. 檢查字符串/組字符串(分立|)在Python
- 10. python檢查列表中的字符串?
- 11. 檢查一個字符串是在python
- 12. 檢查字符串包含在Python
- 13. 如何在java中檢查字符串與字符串數組?
- 14. 檢查字符串是否爲數字或不在python
- 15. 檢查字符串數組
- 16. 檢查字符串函數
- 17. 檢查字符串數組
- 18. 如何檢查在字符串數組存在的字符串
- 19. 檢查字符串中的字符
- 20. 在Python中查找字符串中的字符數
- 21. Python檢查字符
- 22. 檢查字符串的子字符串
- 23. 檢查字符串包含字符串
- 24. 檢查字符串是否包含python中的特殊字符
- 25. Python - 檢查日期字符串中的字符
- 26. 檢查字符是在Python
- 27. 檢查字符串
- 28. 檢查字符串
- 29. 檢查字符串
- 30. 檢查字符串
還有一件事,變量中的數字就像是「0.123」 – Marko
這仍然適用於轉換爲浮點數 –