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,比它更好的是知道它是如何工作的以及为什么工作的,我感谢您的详细解释!