Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 - Fatal编程技术网

Python 匹配逗号分隔的列表

Python 匹配逗号分隔的列表,python,regex,Python,Regex,我有这样一个示例字符串: [{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} {0:10}] 我对括号中的第一组项目感兴趣: {HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} 我想解析集合并将其放入列表中。我正在使用python for match in re

我有这样一个示例字符串:

[{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} {0:10}]
我对括号中的第一组项目感兴趣:

{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT}
我想解析集合并将其放入列表中。我正在使用python

for match in re.finditer("(?i)[a-z]+", subject):
    # match start: match.start()
    # match end (exclusive): match.end()
    # matched text: match.group()
这将帮助您遍历列表中的“元素”

编辑:你现在写它是更大字符串的一部分。这改变了原来的问题

for match in re.finditer(r"(?i)(?:(\b[a-z]+\b)[,}])", subject):
    # match start: match.start()
    # match end (exclusive): match.end()
    # matched text: match.group(1)

这将找到您的列表并提取其中的单词。

正则表达式只会创建标记,之后您需要处理它们。幸运的是,python的标准正则表达式库包含一个函数,可以为您提供它找到的所有值

import re
input = '{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT}'
data = re.findall(r'\w+', input)

此外,这将找到所有“单词”。根据有效输入的内容,您可能需要更强大的正则表达式。在这方面,其他详细信息可能会有所帮助。

要拆分字符串,可以使用
string.split(s,,)
。这将返回一个基于字符“,”拆分的字符串列表


要从一个较大的字符串中得到这个列表,请先拆分“{”和“}”字符。

我有点困惑。您想要一个单独匹配此列表中所有元素的正则表达式吗?还是要将列表拆分为数组或其他更易于处理的内容?后者。拆分不起作用,因为它是较大字符串的一部分。是否要确定在逗号分隔列表中是否找到给定变量的值?您的逗号分隔列表存储在什么位置?你提到它是一个更大的字符串的一部分。请给我们更多信息。如果它是较大字符串的一部分,您可以使用
substring()
仅获取逗号分隔的列表。或者你可以先把它分成“{”和“}”两个字符。我做了更多的编辑。这些信息够了吗?对不起,我之前不清楚。