Python 正则表达式将一行分成 4 部分

标签 python regex python-2.7

如何使用正则表达式将每一行拆分为以下内容

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/

相关文章:

python - 使用 Python BeautifulSoup 单击链接

python - 在 cron 中运行 headless selenium 时,出现错误 "Pyperclip could not find a copy/paste mechanism for your system"

python - 在python中分离类定义和实现

python - 如何制作将多个模式匹配到同一索引的python正则表达式

python - 属性错误: 'module' object has no attribute 'Graph'

python - Python 中的方法重载 : more overloading

java正则表达式提取方括号内的内容

regex - 负整数正则表达式不匹配

python - 如何使用 python 从字典中编写 yaml 文件?

python - 如何在 Python 中只处理一次重复的有序列表中的每个项目?