在数据的文本文件中,我无法用一个逗号替换三个逗号。在
我正在处理一个大的文本文件,将其转换为逗号分隔格式,以便可以使用数据库查询它。在
我在命令提示符下执行以下操作,它可以工作:
>>> import re
>>> line = 'one,,,two'
>>> line=re.sub(',+',',',line)
>>> print line
one,two
>>>
以下是我的实际代码:
^{pr2}$这是我从上面的代码中得到的: 有几个逗号在一起。我不明白为什么他们不被替换成一个逗号。 别担心,我一开始就不明白这些多余的逗号是怎么来的。在
50-1437,d
2012/05/01
00/08/27
232_PD_1_DIA,PED_HL1_CR,,,12.482,12.478,-0.004,-0.021,0.020,----|++++
232_PD_2_DIA_TOP,PED_HL2_TOP,,12.482,12.483,0.001,-0.021,0.020,----|++++
232_PD_2_DIA,PED_HL2_CR,,12.482,12.477,-0.005,-0.021,0.020,----|++++
232_PD_2_DIA_BOT,PED_HL2_BOT,,12.482,12.470,-0.012,-0.021,0.020,--|--++++
参考原始数据:
PART IDENTIFIER : d
2012/05/01
00/08/27
232_PD_1_DIA Eval Feat = PED_HL1_CR MM/ANGDEC
Nom Act Dev LwTol UpTol Trend
12.482 12.478 -0.004 -0.021 0.020 ----|++++
232_PD_2_DIA_TOP Eval Feat = PED_HL2_TOP MM/ANGDEC
12.482 12.483 0.001 -0.021 0.020 ----|++++
232_PD_2_DIA Eval Feat = PED_HL2_CR MM/ANGDEC
12.482 12.477 -0.005 -0.021 0.020 ----|++++
有人能指出我做错了什么吗?在
提前谢谢。。。在
你的正则表达式运行良好。问题是,如果您在之后连接这些行(通过
write()
将它们连接起来),然后使用正则表达式擦洗它们。在相反,在所有行上使用
"".join()
,对整个行运行re.sub()
,然后一次将其全部write()
。在我认为您的问题是由这样一个事实引起的:删除行结束符并没有连接行,再加上
write
没有在每个字符串的末尾添加新行。所以有多个输入行看起来就像输出中的一行。在看看注释,您似乎认为只要用一个空字符串替换行的末尾,就可以神奇地将下一行追加到它后面,但这实际上行不通。因此,您看到的三个逗号不会被
re.sub
命令替换,因为它们不是在一行中,而是多个输入行(除了逗号之外,所有替换都是空的),因为您去掉了它们的'\n'
字符,write
不会自动添加'\n'
,所以它们是多个输入行(毕竟除了逗号之外,所有替换内容都是空的)到每个写入字符串的末尾(不像print
)。在要调试您的代码,只需在每行代码后面加上
print line
,看看每一行实际上是什么——这应该有助于您看到哪里出了问题。在一般来说,读取每个“记录”跨越多行的文件格式需要比
for line in file
循环更复杂的方法。在相关问题 更多 >
编程相关推荐