Python中模式中的子字符串匹配
我想得到这个字符串模式中的子字符串s2Python中模式中的子字符串匹配,python,regex,string,pattern-matching,Python,Regex,String,Pattern Matching,我想得到这个字符串模式中的子字符串s2 ('s1', 's2', 's3', 's4') s1、s2、s3是任意字符串(长度可变)和逗号,空格和括号是特定字符。 我想知道:有没有一种简单的pythonic方法可以使用正则表达式匹配或类似的方法来实现它?您可以通过ast import ast h = "('s1', 's2', 's3', 's4')" print ast.literal_eval(h)[1] 或 通过分裂 print h.split(', ')[1] 或 您可以通过ast
('s1', 's2', 's3', 's4')
s1、s2、s3是任意字符串(长度可变)和逗号,空格和括号是特定字符。
我想知道:有没有一种简单的pythonic方法可以使用正则表达式匹配或类似的方法来实现它?您可以通过
ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
通过分裂
print h.split(', ')[1]
或
您可以通过
ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
通过分裂
print h.split(', ')[1]
或
您可以通过
ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
通过分裂
print h.split(', ')[1]
或
您可以通过
ast
import ast
h = "('s1', 's2', 's3', 's4')"
print ast.literal_eval(h)[1]
或
通过分裂
print h.split(', ')[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]
作为另一种选择,可以使用Pythoncsv
模块,它可以很好地处理各种报价场景:
import csv, StringIO
text = "('s1', 's2', 's3', 's4')"
print next(csv.reader(StringIO.StringIO(text.strip("()")), skipinitialspace=True, quotechar="'"))[1]
这首先将文本转换为使用csv阅读器所需的文件类型对象。可以使用以下正则表达式:
import re
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")
为您提供所有条目的列表,如下所示:
['s1', 's2', 's3', 's4']
因此,对于s2:
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")[1]
作为另一种选择,可以使用Pythoncsv
模块,它可以很好地处理各种报价场景:
import csv, StringIO
text = "('s1', 's2', 's3', 's4')"
print next(csv.reader(StringIO.StringIO(text.strip("()")), skipinitialspace=True, quotechar="'"))[1]
这首先将文本转换为使用csv阅读器所需的文件类型对象。可以使用以下正则表达式:
import re
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")
为您提供所有条目的列表,如下所示:
['s1', 's2', 's3', 's4']
因此,对于s2:
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")[1]
作为另一种选择,可以使用Pythoncsv
模块,它可以很好地处理各种报价场景:
import csv, StringIO
text = "('s1', 's2', 's3', 's4')"
print next(csv.reader(StringIO.StringIO(text.strip("()")), skipinitialspace=True, quotechar="'"))[1]
这首先将文本转换为使用csv阅读器所需的文件类型对象。可以使用以下正则表达式:
import re
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")
为您提供所有条目的列表,如下所示:
['s1', 's2', 's3', 's4']
因此,对于s2:
print re.findall("'(\w+)'", "('s1', 's2', 's3', 's4')")[1]
作为另一种选择,可以使用Pythoncsv
模块,它可以很好地处理各种报价场景:
import csv, StringIO
text = "('s1', 's2', 's3', 's4')"
print next(csv.reader(StringIO.StringIO(text.strip("()")), skipinitialspace=True, quotechar="'"))[1]
这首先将文本转换为使用csv读取器所需的文件类型对象。直接使用strip和split allowly
s="""('s1', 's2', 's3', 's4')"""
print s.split()[1].strip("',")
但regex更干净:
import re
s="""('s1', 's2', 's3', 's4')"""
print re.findall("\w\d",s)[1]
直截了当的,条状的,一分为二的
s="""('s1', 's2', 's3', 's4')"""
print s.split()[1].strip("',")
但regex更干净:
import re
s="""('s1', 's2', 's3', 's4')"""
print re.findall("\w\d",s)[1]
直截了当的,条状的,一分为二的
s="""('s1', 's2', 's3', 's4')"""
print s.split()[1].strip("',")
但regex更干净:
import re
s="""('s1', 's2', 's3', 's4')"""
print re.findall("\w\d",s)[1]
直截了当的,条状的,一分为二的
s="""('s1', 's2', 's3', 's4')"""
print s.split()[1].strip("',")
但regex更干净:
import re
s="""('s1', 's2', 's3', 's4')"""
print re.findall("\w\d",s)[1]
ast.literal\u eval[1]
是在s1
中转义的单引号,s2
,…?ast.literal\u eval[1]
是在s1
中转义的单引号,s2
是在s1
中转义的单引号,s2
是否在s1
,s2
,…中转义单引号。。。?