我想获得的子S2在此字符串模式匹配子串在Python
('s1', 's2', 's3', 's4')
与S1,S2,S3是任意字符串(可变长度)和逗号,坯件和括号是那些特定的字符。 我想知道:是否有pythonic,使用正则表达式匹配或类似的简单方法?
我想获得的子S2在此字符串模式匹配子串在Python
('s1', 's2', 's3', 's4')
与S1,S2,S3是任意字符串(可变长度)和逗号,坯件和括号是那些特定的字符。 我想知道:是否有pythonic,使用正则表达式匹配或类似的简单方法?
如下可以使用正则表达式:
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读者需要一个文件类型的对象。
您可以通过ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
得到答案通过分裂。
print h.split(', ')[1]
或
print h.split("', '")[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]
'ast.literal_eval(S)[1]' –
是单引号's1','s2',...逃脱? –