例如,在下面调用.split()会给...
x = "[Chorus: Rihanna & Swizz Beatz]
I just wanted you to know
...more lyrics
[Verse 2: Kanye West & Swizz Beatz]
I be Puerto Rican day parade floatin'
... more lyrics"
x.split()
print(x)
会给出
["I just wanted you to know ... more lyrics", " be Puerto Rican day parade floatin' ... more lyrics]
另外,如何将删除的部分保存在括号中,谢谢。在两件事物中拆分未知字符串很难:/
答案 0 :(得分:2)
使用 re.split
>>> x = """[Chorus: Rihanna & Swizz Beatz] I just wanted you to know...more lyrics [Verse 2: Kanye West & Swizz Beatz] I be Puerto Rican day parade floatin' ... more lyrics"""
>>> [i.strip() for i in re.split(r'[\[\]]', x) if i]
# ['Chorus: Rihanna & Swizz Beatz', 'I just wanted you to know...more lyrics', 'Verse 2: Kanye West & Swizz Beatz', "I be Puerto Rican day parade floatin' ... more lyrics"]
答案 1 :(得分:0)
data=x.split(']')
print(data)
data=data[1::]
print(data)
location=0;
for i in data:
data[location]=i.split('[')[0]
location=location+1;
print(data)
我为你的初始输入得到了这个输出
['I just wanted you to know...more lyrics', "I be Puerto Rican day parade floatin'... more lyrics"]
我希望这会有所帮助
答案 2 :(得分:0)
根据python文档:https://docs.python.org/2/library/re.html
Python基本上是一种具有良好一致性的优秀语言,但仍然存在一些应该被解决的语言怪癖。你会认为 re.split()函数只有一个潜在的参数来决定是否返回分隔符。事实证明,无论出于何种原因,它是否返回分隔符都是基于输入。如果在re.split()中用括号括起你的正则表达式,Python将返回分隔符作为数组的一部分。
您可以尝试以下两种方法来实现目标:
re.split("]",string_here)
和
re.split("(])",string_here)
第一种方法将返回字符串并删除分隔符。第二种方法将返回字符串,其中分隔符仍在那里,作为单独的条目。
例如,在字符串&#34上运行第一个例子;这是一个字符串"会产生:
["这是"," 。字符串"]
运行第二个例子会产生:
["这是","]"," 。字符串"]
就个人而言,我不确定为什么他们做出了这种奇怪的设计选择。
答案 3 :(得分:0)
import re
...
input='[youwontseethis]what[hi]ever'
...
output=re.split('\[.*?\]',input)
print(output)
#['','what','ever']
如果输入字符串立即以“tag”开头,那么元组中的第一项将是一个空字符串。如果您不想要此功能,您也可以这样做:
import re
...
input='[youwontseethis]what[hi]ever'
...
output=re.split('\[.*?\]',input)
output=output[1:] if output[0] == '' else output
print(output)
#['what',ever']
要获取标签,只需替换
即可output=re.split('\[.*?\]',input)
与
output=re.findall('\[.*?\]',input)
#['[youwontseethis]','[hi]']