根据方括号之间的单词拆分字符串
split string according to words between square parenthesis
我想使用正则表达式拆分字符串。
例如
val = "[python] how to [css]"
val = "[python][css] how to"
val = "how to [python][css]"
我的字符串看起来像这样(尝试以不同的方式显示值字符串),我想像这样拆分:
a=['python','css'] #(type list)
b="how to" #(type string)
我试过了
import re
pat = re.compile(r'(\w+\s*)')
re.findall(pat,val)
输出:
['python', 'how ', 'to ', 'css']
我的正则表达式做错了什么?
正则表达式 (\w+\s*)
匹配 [A-Za-z0-9_]
后跟 0 个或多个空格,因此它将匹配 [python]
和 [= 中的 css
和 python
16=]。这个正则表达式:(\w+\s+)
匹配你想要的。
您可以执行以下操作:
import re
pat = re.compile(r'\[(.*)\]')
re.findall(pat,val) # wil return ['python', 'css']
现在您可以从相反的正则表达式中获取其余部分(匹配不在 [
和 ]
之间的所有内容)。
你可以试试
import re
val = "[python] how to [css]"
m = re.findall(r'\[(\w*)\]', val)
print m
# ['python', 'css']
\[(\w*)\]
将匹配方括号内的所有单词
得到问题的第一部分 a=['python','css'] #(type list)
>>> import re
>>> val = "[python] how to [css]"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
>>> val = "[python][css] how to"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
>>> val = "how to [python][css]"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
第二部分:(根据vks解决方案更新)
>>> re.sub(r"\[[^\]]*\]","",val)
'how to '
x="[python] how to [css]"
print re.findall(r"(?<=\[)[^\]]*(?=\])",x) # this is the list you want
print re.sub(r"\[[^\]]*\]","",x) # this is the string you want
试试这个 way.You 既可以有列表也可以有字符串。
我想使用正则表达式拆分字符串。
例如
val = "[python] how to [css]"
val = "[python][css] how to"
val = "how to [python][css]"
我的字符串看起来像这样(尝试以不同的方式显示值字符串),我想像这样拆分:
a=['python','css'] #(type list)
b="how to" #(type string)
我试过了
import re
pat = re.compile(r'(\w+\s*)')
re.findall(pat,val)
输出:
['python', 'how ', 'to ', 'css']
我的正则表达式做错了什么?
正则表达式 (\w+\s*)
匹配 [A-Za-z0-9_]
后跟 0 个或多个空格,因此它将匹配 [python]
和 [= 中的 css
和 python
16=]。这个正则表达式:(\w+\s+)
匹配你想要的。
您可以执行以下操作:
import re
pat = re.compile(r'\[(.*)\]')
re.findall(pat,val) # wil return ['python', 'css']
现在您可以从相反的正则表达式中获取其余部分(匹配不在 [
和 ]
之间的所有内容)。
你可以试试
import re
val = "[python] how to [css]"
m = re.findall(r'\[(\w*)\]', val)
print m
# ['python', 'css']
\[(\w*)\]
将匹配方括号内的所有单词
得到问题的第一部分 a=['python','css'] #(type list)
>>> import re
>>> val = "[python] how to [css]"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
>>> val = "[python][css] how to"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
>>> val = "how to [python][css]"
>>> [i[1:-1] for i in re.findall("(\[[^\]]*\])", val)]
['python', 'css']
第二部分:(根据vks解决方案更新)
>>> re.sub(r"\[[^\]]*\]","",val)
'how to '
x="[python] how to [css]"
print re.findall(r"(?<=\[)[^\]]*(?=\])",x) # this is the list you want
print re.sub(r"\[[^\]]*\]","",x) # this is the string you want
试试这个 way.You 既可以有列表也可以有字符串。