消除多余的逗号

2024-05-26 17:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在数据的文本文件中,我无法用一个逗号替换三个逗号。在

我正在处理一个大的文本文件,将其转换为逗号分隔格式,以便可以使用数据库查询它。在

我在命令提示符下执行以下操作,它可以工作:

  >>> 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     ----|++++

有人能指出我做错了什么吗?在

提前谢谢。。。在


Tags: retopevallineonecrpdmm
2条回答

你的正则表达式运行良好。问题是,如果您在之后连接这些行(通过write()将它们连接起来),然后使用正则表达式擦洗它们。在

相反,在所有行上使用"".join(),对整个行运行re.sub(),然后一次将其全部write()。在

我认为您的问题是由这样一个事实引起的:删除行结束符并没有连接行,再加上write没有在每个字符串的末尾添加新行。所以有多个输入行看起来就像输出中的一行。在

看看注释,您似乎认为只要用一个空字符串替换行的末尾,就可以神奇地将下一行追加到它后面,但这实际上行不通。因此,您看到的三个逗号不会被re.sub命令替换,因为它们不是在一行中,而是多个输入行(除了逗号之外,所有替换都是空的),因为您去掉了它们的'\n'字符,write不会自动添加'\n',所以它们是多个输入行(毕竟除了逗号之外,所有替换内容都是空的)到每个写入字符串的末尾(不像print)。在

要调试您的代码,只需在每行代码后面加上print line,看看每一行实际上是什么——这应该有助于您看到哪里出了问题。在

一般来说,读取每个“记录”跨越多行的文件格式需要比for line in file循环更复杂的方法。在

相关问题 更多 >

    热门问题