[英]In Python 2.7: How can I split a number from a string
我的字符串是這樣的:
str1 = "3,5 of 5 stars"
str2 = "4 of 5 stars"
我想提取每個字符串的第一個數字。
類似的東西:
str1 = 3,5
str2 = 4
問題是數字有兩種格式(整數和浮點數)
我希望你們能幫助我
謝謝你的幫助
string = "3 o 4 k 5"
for char in string:
entry = ""
try:
entry = int(char)
except:
continue
if entry != "":
print entry
break
這是解釋。 string
保存字符串。 當for
循環開始時, char
被設置為字符串中的第一個字符。 for
循環嘗試將字符轉換為整數。 如果成功,則表示它的字符是一個數字。 在這種情況下,它是第一個找到的數字,因此它被輸出並且循環停止。
如果轉換失敗,它將輸出一個錯誤(因此是except
部分),但由於我們使用的是try/except
,循環將立即跳到它的下一個字符。 for
循環將繼續,直到找到一個數字或字符串中沒有數字。
我猜你的字符串格式是 - X of Y stars
您可以通過這種方式提取 X。
>>> my_str = "3,5 of 5 stars"
>>> my_str.strip().split(' ')[0]
'3,5'
假設您想將3,5
轉換為 float 以對其進行一些數學運算,然后您首先將,
替換為.
然后環繞float(...)
。
>>> float(my_str.strip().split(' ')[0].replace(',','.'))
3.5
如果在"of"
之前有一個空格,您可以使用(避免使用正則表達式):
>>> print [item.split()[0] for item in [str1, str2]]
['3,5', '4']
如果字符串的模式始終是“X 個 Y 星”,您可以執行以下操作:
str1 = "3,5 of 5 stars"
str2 = "4 of 5 stars"
lst = [str1, str2, ...]
nums = [float(x.split(' of ')[0].replace(',','.')) for x in lst]
print(nums) # prints [3.5, 4.0]
要匹配字符串中的數字和浮點數(使用,
分隔符),您可以使用re
模塊:
>>> re.findall(r"[-+]?\d*\,\d+|\d+", "5,5 of 5 stars")
['5,5', '5']
>>> re.findall(r"[-+]?\d*\,\d+|\d+", "5,5 of 5 stars")[0]
'5,5'
>>> re.findall(r"[-+]?\d*\,\d+|\d+", "4 of 5 stars")[0]
'4'
我使用了這個 StackOverflow 答案(來自@miku)中的正則表達式,但將其修改為使用,
作為分隔符而不是.
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.