如何使用正则表达式将每一行拆分为以下内容
3 Name Test 50.5 -
2 Name-Test - 3.12
1 Name Test Test 50.5 -
2 Name Test 32 213.12
3 Name Test 50.5 -
2 Name Test - 50.12
1 Name Test 50.5 -
2 Name Test - -
将拆分为:
3 | Name Test | 50.5 | -
2 | Name-Test | - | 3.12
1 | Name Test Test | 50.5 | -
2 | Name Test | 32 | 213.12
3 | Name Test | 50.5 | -
2 | Name Test | - | 50.12
1 | Name Test | 50.5 | -
2 | Name Test | - | -
我得到的最远的是:re.compile('(\d+) (.+) (\w+.\w+)')
|
符号所在的位置就是需要拆分的位置...
最佳答案
好的,这是另一种方法。这是基于针对您的特定用例的“拆分”,不涉及正则表达式。关键思想是第二列(名称)中可以有空格,而所有其他列都有明确定义的格式。所以想法是左右分开,保留其余部分(名称列)不变:
def mysplit(line):
r = line.rsplit(' ', 2)
l = r[0].split(' ', 1)
print " | ".join(l + r[i:])
当我根据您在 /tmp/lines.txt
中的输入在 IPython 中运行以下代码片段时:
for l in open('/tmp/lines.txt'):
mysplit(l.strip())
结果:
3 | Name Test | 50.5 | - 2 | Name-Test | - | 3.12 1 | Name Test Test | 50.5 | - 2 | Name Test | 32 | 213.12 3 | Name Test | 50.5 | - 2 | Name Test | - | 50.12 1 | Name Test | 50.5 | - 2 | Name Test | - | -
关于Python 正则表达式将一行分成 4 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310531/