我的字符串是類似的東西:在Python 2.7:如何從一個字符串分割一些
str1 = "3,5 of 5 stars"
str2 = "4 of 5 stars"
我想提取每個字符串的第一個號碼。
類似的東西:
str1 = 3,5
str2 = 4
的問題是,這些數字是在兩種格式(int和float)
我希望你們能幫助我
感謝您的幫助
我的字符串是類似的東西:在Python 2.7:如何從一個字符串分割一些
str1 = "3,5 of 5 stars"
str2 = "4 of 5 stars"
我想提取每個字符串的第一個號碼。
類似的東西:
str1 = 3,5
str2 = 4
的問題是,這些數字是在兩種格式(int和float)
我希望你們能幫助我
感謝您的幫助
如果在"of"
前的空間,你可以使用(避免正則表達式):
>>> print [item.split()[0] for item in [str1, str2]]
['3,5', '4']
爲什麼在''之後必須有一個空格?你可能以前的意思是 –
@ Ev.Kounis良好的捕獲,沒有咖啡還是哈哈。 – ospahiu
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(my_str.strip().split(' ')[0].replace(',','.'))
3.5
你可以用'.'替換''' –
@ Ev.Kounis是的,我會添加那個註釋。 –
如果字符串的模式永遠是你可以做的「Y的恆星X」以下:
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'
我用正則表達式從this StackOverflow answer (from @miku)但修改了它使用,
作爲分隔符,而不是.
。
對浮動使用逗號? 'str1 = 3,5'會翻譯成Python中的一個元組而不是一個浮點數。通過'str =「X of Y stars」'來生成一般格式\ pattern嗎? –
你的字符串總是以數字開頭嗎? – MSeifert
'.split(「of」)[0]' –