簡體   English   中英

在 Python 2.7 中:如何從字符串中拆分數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM