如何解决获取括号之间的单个字符串
假设我有这个字符串
[LEVEL]
[NAME]The Girder Guide! [/NAME]
[AUTHOR]draworigami[/AUTHOR]
[AUTHORLEVEL]11[/AUTHORLEVEL]
[COUNTRY]CA[/COUNTRY]
[ID]62784[/ID]
[RATING]4[/RATING]
[DATE]2021-05-11 23:08:35[/DATE]
[PLAYCOUNT]33[/PLAYCOUNT]
[WINCOUNT]28[/WINCOUNT]
[STARS]0[/STARS]
[COMMENTS]1[/COMMENTS]
[/LEVEL]
有没有办法在每个 [] 和 [/] 之间获取单独的字符串?我一直在用互联网上的代码对其进行拍摄,但无济于事。
解决方法
这将返回 [] 和 [/] 之间的所有文本:
from bs4 import BeautifulSoup
rml = """
[LEVEL]
[NAME]The Girder Guide! [/NAME]
[AUTHOR]draworigami[/AUTHOR]
[AUTHORLEVEL]11[/AUTHORLEVEL]
[COUNTRY]CA[/COUNTRY]
[ID]62784[/ID]
[RATING]4[/RATING]
[DATE]2021-05-11 23:08:35[/DATE]
[PLAYCOUNT]33[/PLAYCOUNT]
[WINCOUNT]28[/WINCOUNT]
[STARS]0[/STARS]
[COMMENTS]1[/COMMENTS]
[/LEVEL]
"""
html = rml.replace('[','<').replace(']','>')
soup = BeautifulSoup(html,'html.parser')
print(soup.find('level').text)
输出:
The Girder Guide!
draworigami
11
CA
62784
4
2021-05-11 23:08:35
33
28
0
1
编辑 #1: 原始字符串没有换行符,所以为了漂亮打印:
rml = "[LEVEL][NAME]The Girder Guide![/NAME][AUTHOR]draworigami[/AUTHOR][AUTHORLEVEL]11[/AUTHORLEVEL][COUNTRY]CA[/COUNTRY][ID]62784[/ID][RATING]4[/RATING][DATE]2021-05-11 23:08:35[/DATE][PLAYCOUNT]33[/PLAYCOUNT][WINCOUNT]28[/WINCOUNT][STARS]0[/STARS][COMMENTS]1[/COMMENTS][/LEVEL]"
html = rml.replace('[','html.parser')
elements = soup.find('level').contents
for e in elements:
print(e.text)
,
试试这个:
st = "[LEVEL][NAME]The Girder Guide![/NAME][AUTHOR]draworigami[/AUTHOR][AUTHORLEVEL]11[/AUTHORLEVEL][COUNTRY]CA[/COUNTRY][ID]62784[/ID][RATING]4[/RATING][DATE]2021-05-11 23:08:35[/DATE][PLAYCOUNT]33[/PLAYCOUNT][WINCOUNT]28[/WINCOUNT][STARS]0[/STARS][COMMENTS]1[/COMMENTS][/LEVEL]"
st = st.split("]")
for i in range(len(st)):
st[i] = st[i].replace("[","")
st[i]= st[i].replace("/","")
st = st[:-1]
print(st)
st 变成-
['LEVEL','NAME','The Girder Guide!NAME','AUTHOR','draworigamiAUTHOR','AUTHORLEVEL','11AUTHORLEVEL','COUNTRY','CACOUNTRY','ID','62784ID','RATING','4RATING','DATE','2021-05-11 23:08:35DATE','PLAYCOUNT','33PLAYCOUNT','WINCOUNT','28WINCOUNT','STARS','0STARS','COMMENTS','1COMMENTS','LEVEL']
我做了什么:
- 将字符串围绕
]
拆分,以便获得不含字符“]”的字符串列表。 - 简单地从获得的列表中的字符串中分别删除字符
[
和/
。 - 跳过最后一个字符,因为它是由
split
生成的空字符串。
使用正则表达式怎么样?
import re
s = '[LEVEL][NAME]The Girder Guide![/NAME][AUTHOR]draworigami[/AUTHOR][AUTHORLEVEL]11[/AUTHORLEVEL][COUNTRY]CA[/COUNTRY][ID]62784[/ID][RATING]4[/RATING][DATE]2021-05-11 23:08:35[/DATE][PLAYCOUNT]33[/PLAYCOUNT][WINCOUNT]28[/WINCOUNT][STARS]0[/STARS][COMMENTS]1[/COMMENTS][/LEVEL]'
s = s.replace('/','')
result = []
for e in re.findall(r"\][A-Za-z0-9 _.:,!'/$\-]+\[",s):
result.append(e.replace('[','').replace(']',''))
结果
['The Girder Guide!','draworigami','11','CA','62784','4','2021-05-11 23:08:35','33','28','0','1']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。