在Python中使用正则表达式的Match函数会在末尾输出一个额外的逗号

在Python中使用正则表达式的Match函数会在末尾输出一个额外的逗号,python,regex,Python,Regex,我不知道为什么在python中将Match()与Regex一起使用时,在每个输出的末尾都会有一个额外的逗号。有什么想法吗?谢谢 我的代码: import re yyyyfile = open("yyyy.txt",'w') text = open('final.txt') for line in text: x = re.match('.*?^([0-9][0-9][0-9][0-9])$.*', line) if x: print >

我不知道为什么在python中将Match()与Regex一起使用时,在每个输出的末尾都会有一个额外的逗号。有什么想法吗?谢谢

我的代码:

 import re

 yyyyfile = open("yyyy.txt",'w')

 text = open('final.txt')

 for line in text: 

    x = re.match('.*?^([0-9][0-9][0-9][0-9])$.*', line)

    if x:

        print >> yyyyfile, x.groups()
电流输出:

(‘1573’,)

(‘1595’,)

(‘1929’,)

(‘1933’,)

期望输出:

('1573')

('1595')

('1929')

(‘1933’)


这是因为re.match的groups()的输出是您捕获的所有组。这是一个元组。

使用
x.group(1)
或其他任何选项。

这是因为re.match的groups()的输出是您捕获的所有组。这是一个元组。

使用
x.group(1)
或其他任何选项。

我不知道
yyyy.txt中有什么内容,也不知道您为什么要打印它,但假设
final.txt
包含您打开文件时应使用的文本:

with open('final.txt', 'r') as f:
    text = f.read()
解析的工作原理如下:

import re

text = '''1235, dfx as nxcn 1229 nxcn 32 4 0 9877'''

matches = re.findall('(\d{4})', text)

for match in matches:
    print(match)

我不知道
yyyy.txt
里面是什么,也不知道为什么要打印它,但假设
final.txt
包含您打开文件时应该使用的文本:

with open('final.txt', 'r') as f:
    text = f.read()
解析的工作原理如下:

import re

text = '''1235, dfx as nxcn 1229 nxcn 32 4 0 9877'''

matches = re.findall('(\d{4})', text)

for match in matches:
    print(match)

您不会因为使用了match而获得额外的逗号。得到这个逗号的原因是打印元组。你可以像这样达到预期的效果

print >> yyyyfile, '(%s)' % x.group(1)

您不会因为使用了match而获得额外的逗号。得到这个逗号的原因是打印元组。你可以像这样达到预期的效果

print >> yyyyfile, '(%s)' % x.group(1)

你能举例说明文件中的行是什么样子的吗?(来自final.txt)元组没有问题,是吗?你的正则表达式应该做什么?感觉“[0-9]{4}”应该可以做到这一点吗?你能举例说明文件中的行是什么样子的吗?(来自final.txt)元组没有问题,是吗?你的正则表达式应该做什么?感觉像是“[0-9]{4}”应该起作用了?谢谢你的帮助。运行您提供的代码后,我收到以下错误。TypeError:“NoneType”对象不可用。请更新我的答案以提供可验证的示例。我还简化了正则表达式。谢谢你的帮助。运行您提供的代码后,我收到以下错误。TypeError:“NoneType”对象不可用。请更新我的答案以提供可验证的示例。我还简化了正则表达式。