簡體   English   中英

查找字符串中的最小數字

[英]Find smallest number in string

我試圖在列表的每個字符串元素中找到最小的數字。

VIS = ['GREATER THAN 10 KM ', 'GREATER THAN 10 KM ', 'GREATER THAN 10 KM    ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ']

我已經嘗試過在每個元素上使用split()函數,但是“ 6KM”中缺少空格似乎使它無法正常工作。

minVIS = []
for i in range(len(VIS)):
    minVIS.append(min(VIS[i].split()))

print(minVIS)

返回

minVIS = ['10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10KM,', '10KM,', '10KM,']

理想情況下,我想要

minVis = [10, 10, 10, 6, 6]

例如。

使用正則表達式。 re.findall(r"\\d+", STRING)獲取字符串中的所有整數。

例如:

import re

VIS = ['GREATER THAN 10 KM ', 'GREATER THAN 10 KM ', 'GREATER THAN 10 KM    ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ']

minVIS = []
for i in VIS:
    minVIS.append(min(map(int, re.findall(r"\d+", i))))
    #If floats in string Thanks Anton vBR
    #minVIS.append(min(map(float, re.findall(r"\d+\.?\d*", i))))

print(minVIS)

輸出:

[10, 10, 10, 6, 6]
import re
VIS = ['GREATER THAN 10 KM ', 'GREATER THAN 10 KM ', 'GREATER THAN 10 KM    ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ', '10 KM, REDUCING TO 6KM, IN PASSING SHOWERS ']
print (list((min(map(int, re.findall(r'\d+', item)))) for item in VIS))

otuput:

[10, 10, 10, 6, 6]

from itertools import groupby

result = []
for item in VIS:
    result.append(min([int(''.join(i)) for is_digit, i in groupby(item, str.isdigit) if is_digit]))
print (result)

# equal with list comprehension

print ([min([int(''.join(i)) for is_digit, i in groupby(item, str.isdigit) if is_digit]) for item in VIS])

otuput:

[10, 10, 10, 6, 6]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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