python 查找两个字符串之间的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 查找两个字符串之间的内容相关的知识,希望对你有一定的参考价值。
>>>
1 tn71cxp
5tn81etfc
9tn71piu
1tn71fana
tn71fanb
#
如何通过 “>>>” 和“ #”取出这两个之间的内容,文件中会有很多“>>>”和“#”,要很最相近的匹配,最好能保存到list中
myfile=open(filename)
s=''
start=False
mylist=[]
for line in myfile:
if line.strip()=='>>>':
start=True
elif line.strip()=='#':
mylist.append(s)
s=''
start=False
elif start:
s+=line
return mylist
未经测试,应该是这个意思追问
不是这样的,那两个字符串后面是还有值的,用strip()不适合吧
>>>:asfdasdf
t67yhn9iokm
#:asdfasdfasdf
def getlist(filename):
myfile=open(filename)
contents=myfile.read()
mylist= re.findall(r"(?<=>>>).*?(?=#)",contents,re.DOTALL)
myfile.close()
return mylist本回答被提问者采纳 参考技术B 1、将字符串按照“>>>”或“#”分割成小字符串。
2、再将其中的一个分割符替换成空字符。
正则表达式在 Python 中查找两个字符串之间的字符串
【中文标题】正则表达式在 Python 中查找两个字符串之间的字符串【英文标题】:Regex expression to find strings between two strings in Python 【发布时间】:2019-05-19 14:50:57 【问题描述】:我正在尝试编写一个正则表达式,它返回一个位于其他两个字符串之间的字符串。例如:我想获取字符串以及位于字符串“15/08/2017”和“$610,000”之间的空格
a='172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE'
应该返回
"TRANSFER OF LAND"
这是我到目前为止拼凑的表达方式:
re.search(r'15/08/2017(.*?)$610,000', a).group(1)
它不返回任何匹配项。我认为这是因为我们还需要考虑表达式中的空格。有没有办法在忽略空格的两个字符串之间查找字符串?
【问题讨论】:
因为需要转义$
。
【参考方案1】:
使用正则表达式Lookbehind & Lookahead
例如:
import re
a='172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE'
print(re.search(r"(?<=15/08/2017).*?(?=\$610,000)", a).group())
输出:
TRANSFER OF LAND
【讨论】:
【参考方案2】:>>> re.search(r'15/08/2017(.*)\$610,000',a).group(1)
' TRANSFER OF LAND '
由于$
是一个正则表达式元字符(代表逻辑行的结尾),您需要将其转义以用作文字'$'
。
【讨论】:
【参考方案3】:可能更容易使用find
:
a = '172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE'
b = '15/08/2017'
c = '$610,000'
a[a.find(b) + len(b):a.find(c)].strip()
'土地转让'
【讨论】:
以上是关于python 查找两个字符串之间的内容的主要内容,如果未能解决你的问题,请参考以下文章
通过Python中的正则表达式优化在两个列表之间查找匹配子字符串