如何使过滤器正则表达式不忽略文本行中的减号?

时间:2014-12-30 22:56:22

标签: python regex filter

我有这个文字行:

3650466536850 1.364502 1 4.330733 3.295837 0.000000 0.000000 0.000000 0 0 3.583519 0 1 0 0 0 1 11 0 1 1.098612 0.000000 0.000000 -1

当我换成数组时,-1变成了1

['3650466536850', '1.364502', '1', '4.330733', '3.295837', '0.000000',
 '0.000000', '0.000000', '0', '0', '3.583519', '0', '1', '0', '0', '0', '1',
 '1', '0', '1', '1.098612', '0.000000', '0.000000', '1']

使用此方法:

for line in LinesOfFile:
    indexN = filter(None, re.split("[ \-!?:]+", line))

我是否应该在正则表达式中添加一些东西以确保-1被解释为它?

3 个答案:

答案 0 :(得分:1)

这不会起作用吗?

for line in LinesOfFile:
    indexN = filter(None, re.split("[ \!?:]+", line))

我从-删除了re.split("[ \-!?:]+",因为正则表达式在-符号上分裂,这意味着它不包含在数组中。

现在,如果您执行以下操作:

print(list(indexN))

你会得到:

['3650466536850', '1.364502', '1', '4.330733', '3.295837', '0.000000', '0.000000', '0.000000',      
'0', '0', '3.583519', '0', '1', '0', '0', '0', '1', '11', '0', '20', '1', '1.098612', '0.000000',
 '0.000000', '-1']

这不是你想要的吗?

答案 1 :(得分:1)

如果你坚持使用正则表达式,那么你不能这样做:

for line in LinesOfFile:
    indexN = filter(None, re.split(" ", line))

目前还不清楚您使用filter()的额外里程数是多少。

答案 2 :(得分:0)

  

你正在寻找像这样的东西

temp=[]
    x='3650466536850 1.364502 1 4:4.330733 3.295837 0.000000 0.000000 0.000000 0 0 3.583519 0 1 0 0 0 1 11 0 20:1 1.098612 0.000000 0.000000 -1'
    for i in x.split():
        temp.append(i)

for x in temp:
    print x