我想獲得的子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',...逃脫? –