我正在尝试创建一个函数,它将从输入的字符串返回intigers和float。但会删除包含任何非数字字符的单词。目前我已经得到它只返回数字,但它不会将浮动作为浮点数返回
<select ng-model="product1.stars">
<option value="<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star-half-o"></i>
<i class="fa fa-star-o"></i>" >
</option>
</select>
答案 0 :(得分:0)
这应该有效:
re.findall(r"\b(\d+\.\d+|\d+)\b", float_sort)
它使用\b
边界类,并且您使用\\
进行双重转义
答案 1 :(得分:0)
这样的事情怎么样?
正则表达式匹配一个空格分隔的单词,只包含数字字符,可能只有一个点。然后将所有内容转换为float
,然后将可以表示为int
的内容转换为int
。只有在出于某种原因确实需要这些数字int
时才需要最后一步。
import re
float_sort = '0.2 2.1 3.1 ab 3 c abc23'
split = re.findall(r"\b(\d+\.\d+|\d+)\b", float_sort)
print(float_sort)
split = [float(x) for x in split]
split = [int(x) if x == int(x) else x for x in split]
print(split)
print([type(x) for x in split])
答案 2 :(得分:0)
您可以遍历每个值并尝试将其转换为float
或int。如果我们无法对其进行转换,那么我们就不会将其包含在最终输出中。字符串有一些有用的功能,可以让我们确定字符串是否可能代表int
或float
。
# split each element on the space
l = float_sort.split()
# for each element, try and convert it to a float
# and add it into the `converted` list
converted = []
for i in l:
try:
# check if the string is all numeric. In that case, it can be an int
# otherwise, it could be a float
if i.isnumeric():
converted.append(int(i))
else:
converted.append(float(i))
except ValueError:
pass
# [0.2, 2.1, 3.1, 3]