返回一行中的单词列表但忽略某些空格

时间:2014-04-05 00:12:31

标签: python string

说我有这条线:

235Carling             Robert         140 Simpson Ave     Toronto        Ont M6T9H1416/247-2538416/889-6178

你看到每个角色的集合?我希望那些代表数据文件中的列。我遇到的问题是街道地址"柱。

for i in master_file:
    #returns a list of the words, splitting at whitespace
    columns = i.split()

问题是虽然这会将140 Simpson Ave分成三个"单词"。是否有一种方法可以用来说只有在单词被一定数量的空格或其他东西包围时才分开?

1 个答案:

答案 0 :(得分:6)

如果你有标签,这是非常简单的,但是如果你只是寻找有多个空格的东西,你可以使用python的re.split方法来做到这一点:

import re

re.split('\s{2,}', '235Carling             Robert         140 Simpson Ave     Toronto        Ont M6T9H1416/247-2538416/889-6178')

['235Carling', 'Robert', '140 Simpson Ave', 'Toronto', 'Ont M6T9H1416/247-2538416/889-6178']

\s{2,}只匹配任意一系列的2个或更多空白字符。

如果您的行之间的字符实际上有标签,则可以完全避免使用正则表达式:

test = '235Carling             Robert         140 Simpson Ave     Toronto        Ont M6T9H1416/247-2538416/889-6178'

test.split('\t')

['235Carling', 'Robert', '140 Simpson Ave', 'Toronto', 'Ont M6T9H1416/247-2538416/889-6178']