我想在这个字符串模式中获取子字符串s2
('s1', 's2', 's3', 's4')
s1,s2,s3是任何字符串(可变长度)和逗号,空格和括号是那些特定的字符。 我想知道:有没有pythonic,简单的方法使用正则表达式匹配或类似方法吗?
答案 0 :(得分:1)
您可以通过ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
通过分裂。
print h.split(', ')[1]
或
print h.split("', '")[1]
答案 1 :(得分:1)
可以使用如下正则表达式:
import re
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")
为您提供所有条目的列表,如下所示:
['s1', 's2', 's3', 's4']
所以对于s2:
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")[1]
作为另一种选择,可以使用Python csv
模块,它可以很好地处理各种引用场景:
import csv, StringIO
text = "('s1', 's2', 's3', 's4')"
print next(csv.reader(StringIO.StringIO(text.strip("()")), skipinitialspace=True, quotechar="'"))[1]
首先将文本转换为使用csv阅读器所需的文件类型对象。
答案 2 :(得分:1)
直接用条带和拆分一起。
s="""('s1', 's2', 's3', 's4')"""
print s.split()[1].strip("',")
但正则表达式更干净:
import re
s="""('s1', 's2', 's3', 's4')"""
print re.findall("\w\d",s)[1]