import re
s = '[11-09 22:55:41] [INFO ] [ 4560] source_loss: 0.717, target_loss: 1.279,
transfer_loss: 0.001, total_loss: 0.718'
print([float(s) if '.' in s else int(s) for s in re.findall(r'-?\d+\.?\d*', s)])
full_text=yourstring
substring_start=full_text.find(x)
# This will return the index of where your starting indicator first appears in your full string
backend_text=full_text[substring_start:]
# This truncates your string to start only where you indicated
substring_end=backend_text.find(y)
# This will find the index (relative to this backend_string) where your string should end
final_text=backend_text[0:substring_end]
这里有一个工作示例,假设您的字符串是一团乱麻
<article class="product_pod">
<div class="image_container">
<a href="a-light-in-the-attic_1000/index.html"><img alt="A Light in the Attic" class="thumbnail" src="../media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg"/></a>
</div>
<p class="star-rating Three">
<i class="icon-star"></i>
<i class="icon-star"></i>
<i class="icon-star"></i>
<i class="icon-star"></i>
<i class="icon-star"></i>
</p>
<h3><a href="a-light-in-the-attic_1000/index.html" title="A Light in the Attic">A Light in the ...</a></h3>
<div class="product_price">
<p class="price_color">£51.77</p>
<p class="instock availability">
<i class="icon-ok"></i>
In stock
</p>
<form>
<button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button>
</form>
</div>
</article>
1
7条答案
按热度按时间nfs0ujit1#
完全不使用正则表达式怎么样?
你不觉得这样读起来更好吗?
您还可以支持多个开始和结束选项:
3ks5zfa02#
re.match
将匹配字符串的开头,与re.search
相反:这里需要注意两点:
r''
用于字符串字面量,使正则表达式中的反斜杠变得微不足道string
是一个标准模块,因此我选择s
作为变量r = re.compile(...)
构建状态机一次,然后使用r.match(s)
匹配字符串如果需要,还可以使用
urlparse
模块来解析URL(尽管仍然需要提取扩展名):e4eetjau3#
不要贪心,用
^ftp://(.*?)\.jpg$
rekjcdws4#
试试看
如果你想用正则表达式搜索。注意你必须转义句点,因为它在正则表达式中有特殊的含义。
jjhzyzn05#
e7arh2l66#
我想提取所有的数字,包括整型和浮点型。
对我很有效。
参考:https://www.tutorialspoint.com/How-to-extract-numbers-from-a-string-in-Python
fykwrbwg7#
我有一个类似的问题,这是我想出的。
如果要查找字符串中的子字符串,可以使用string.find()方法查看子字符串在字符串中的起始位置和结束位置。
理论上,这里应该对代码中所有名为x_text的变量使用相同的变量名,对那些标记为substring_start或substring_end的变量使用相同的变量名。
这将是内存效率更高的方法,但我给它们起了不同的名字,希望尽可能清楚地说明这一点。
令x =一个字符串,它表示要搜索的子字符串的开始,令y =表示该子字符串的结束。
这里有一个工作示例,假设您的字符串是一团乱麻
下面的代码
将返回: