Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中模式中的子字符串匹配_Python_Regex_String_Pattern Matching - Fatal编程技术网

Python中模式中的子字符串匹配

Python中模式中的子字符串匹配,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

我想得到这个字符串模式中的子字符串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

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]
作为另一种选择,可以使用Python
csv
模块,它可以很好地处理各种报价场景:

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]
作为另一种选择,可以使用Python
csv
模块,它可以很好地处理各种报价场景:

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]
作为另一种选择,可以使用Python
csv
模块,它可以很好地处理各种报价场景:

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]
作为另一种选择,可以使用Python
csv
模块,它可以很好地处理各种报价场景:

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
,…中转义单引号。。。?