Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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 将搜索结果打印为CSV字符串_Python_Regex_List_Csv_Regex Group - Fatal编程技术网

Python 将搜索结果打印为CSV字符串

Python 将搜索结果打印为CSV字符串,python,regex,list,csv,regex-group,Python,Regex,List,Csv,Regex Group,我正在写一个脚本来解析日志中感兴趣的行。除了打印线条外,它工作得很好。我有一个参数化正则表达式,我在re.search中使用它,它返回我的结果。我可以单独打印,也可以在列表中循环打印 我的问题是,对于每个匹配,我想打印一行CSV,基本上每个值都用引号括起来,中间有一个逗号(行尾没有逗号)。有没有一个简单的方法可以做到这一点 我有这个: if lineMatch: for capturedToken in lineMatch.groups(): #print ca

我正在写一个脚本来解析日志中感兴趣的行。除了打印线条外,它工作得很好。我有一个参数化正则表达式,我在
re.search
中使用它,它返回我的结果。我可以单独打印,也可以在列表中循环打印

我的问题是,对于每个匹配,我想打印一行CSV,基本上每个值都用引号括起来,中间有一个逗号(行尾没有逗号)。有没有一个简单的方法可以做到这一点

我有这个:

   if lineMatch:
      for capturedToken in lineMatch.groups():
        #print capturedToken
使用Python2.7如何打印为CSV行(后跟新行)

我尝试过print/end,但据我所知,这只是Python3.x——我尝试的每个变体都会给我带来语法错误。我相信有一种很酷的python方法可以将linematch组中的值打印为逗号分隔的列表;我就是找不到它

我想你想要这个:

if lineMatch:
    print(', '.join(['"{}"'.format(t) for t in lineMatch.groups()]))
用法:

>>> m = re.search('(\d{4})-(\S+)', "1995-jun")
>>> print ', '.join(['"{}"'.format(i) for i in m.groups()])
"1995", "jun"

使用以下字符串中的联接方法:

print ",".join(lineMatch.groups())

为了满足我的好奇心,为什么在打印的开头用逗号,而在连接中用引号作为分隔符?我喜欢这些结果,我只是好奇为什么行首没有逗号,将“{}”改为“{}”,会得到相同的结果吗?@Chris
'somestr'。join(iterable)
iterable
中的所有字符串连接在一起,使用
somestr
作为每个元素之间的分隔符。因此,对于长度为n的iterable,它创建
iterable[0]+somestr+iterable[1]+…+somestr+iterable[n]
。所以你不会得到一个尾随的
somestr
,“
,在你的例子中)。在连接中的每个元素后面加一个逗号,就像我用双引号做的那样,会在最后一个元素后面加一个逗号,这(我假设)不是您想要的。如果您确实需要,您可以使用
'.join(['''{}','.format(i)for i in m.groups()])
。感谢dano,比它更好的是知道它是如何工作的以及为什么工作的,我感谢您的详细解释!