基于特定模式的子串
substring based on a specific pattern
我对 Python 很陌生。我正在尝试从一长串 txt 中提取特定模式。此特定模式在同一文本中多次出现。例如:
s = 'apple/gfgfdAAA1234ZZZuijjk/pear apple/009456/pear apple/dsakjdaghdj/pear'
start = s.find('apple')
end = s.find('pear', start)
s[start:end]
这是我的初步尝试。但是,它只给了我第一个文本块,即 'gfgfdAAA1234ZZZuijjk'
;相反,我还需要 '009456'
和 'dsakjdaghdj'
.
有几种方法可以做到这一点。最花哨的是正则表达式,但我想你不想在这里使用它。
因此,一种解决方案是去除字符串中所有不必要的元素,然后将其拆分。 你可以一次完成:
result = s.replace("apple/","").replace("/pear","").split()
请注意,结果是一个 Python 列表,由三个字符串组成。您可以遍历此列表以分别获取每个项目,然后您可以通过连接来构建一个字符串:
new_s=""
for each_result in result:
new_s = new_s + each_result + " "
new_s = new_s.rstrip() #to remove the last empty space
另一种方法是您可以只删除不需要的元素:
new_s = s.replace('apple/', '').replace('/pear', '')
我对 Python 很陌生。我正在尝试从一长串 txt 中提取特定模式。此特定模式在同一文本中多次出现。例如:
s = 'apple/gfgfdAAA1234ZZZuijjk/pear apple/009456/pear apple/dsakjdaghdj/pear'
start = s.find('apple')
end = s.find('pear', start)
s[start:end]
这是我的初步尝试。但是,它只给了我第一个文本块,即 'gfgfdAAA1234ZZZuijjk'
;相反,我还需要 '009456'
和 'dsakjdaghdj'
.
有几种方法可以做到这一点。最花哨的是正则表达式,但我想你不想在这里使用它。
因此,一种解决方案是去除字符串中所有不必要的元素,然后将其拆分。 你可以一次完成:
result = s.replace("apple/","").replace("/pear","").split()
请注意,结果是一个 Python 列表,由三个字符串组成。您可以遍历此列表以分别获取每个项目,然后您可以通过连接来构建一个字符串:
new_s=""
for each_result in result:
new_s = new_s + each_result + " "
new_s = new_s.rstrip() #to remove the last empty space
另一种方法是您可以只删除不需要的元素:
new_s = s.replace('apple/', '').replace('/pear', '')