替换数字的脚本

时间:2016-10-12 21:37:20

标签: python python-3.x

我的文件内容如下

a      b     c    123.67989

aa   bb  cc   56789.38475

b    c   a    56789.3456

bb   cc  aa   0.12409124

c    a   b    0.0123123

我正在尝试删除每行.后的数字。有没有办法在Python中使用正则表达式? 我编写的代码 f1 =打开(' filename.txt',' r')

表示f1中的行:

    words = line.split()
    print(words[3])

我正在尝试检索最后一行信息,并且我不断收到超出范围的错误列表索引

3 个答案:

答案 0 :(得分:1)

我没有使用正则表达式,但这可能会有所帮助:

text = "a      b     c    123.67989 \n" \
"aa   bb  cc   56789.38475 \n" \
"b    c   a    56789.3456 \n" \
"bb   cc  aa   0.12409124 \n" \
"c    a   b    0.0123123"

lines = text.splitlines()

for line in lines:
   line_without_digits = line.split('.')[0]
   print(line_without_digits)

修改

“。”之后的第一个数字的示例:

text = "a      b     c    123.67989 \n" \
"aa   bb  cc   56789.38475 \n" \
"b    c   a    56789.3456 \n" \
"bb   cc  aa   0.12409124 \n" \
"c    a   b    0.0123123"

lines = text.splitlines()

for line in lines:
    line_split = line.split('.')
    line_without_digits = line_split[0] + "." + line_split[1][0]
    print(line_without_digits)

答案 1 :(得分:0)

这里也没有正则表达式,但是:

with open( "C:/TestFile.txt", 'r' ) as file:
   lines = file.readlines()

out_lines = []

out_file = open( "C:/TestFile2.txt", "w" )

for i in range( len( lines ) ):
   out_lines.append( lines[ i ].split( "." )[0] )

for line in out_lines:
   out_file.write( "%s\n" % line )

要访问小数点后的数字,只需访问分割的第二部分:

Python支持字符串上的偏移表示法,您可以访问拆分的第二部分。

for i in range( len( lines ) ):
   parts = lines[ i ].split( "." )
   out_lines.append( parts[0] )
   first_decimal = parts[1][0]

或者,如果您的目标是对第4列中的值进行舍入,则可能是您想要的内容:

for i in range( len( lines ) ):
   parts = lines[i].split()

   if len( parts ) == 0:
      out_lines.append( "" )
      continue

   out_lines.append( parts[0].ljust( 5 ) + parts[1].ljust( 4 ) + parts[2].ljust( 5 ) + format( float( parts[3] ), '.1f' ) )

答案 2 :(得分:0)

只获取带有一个十进制值的数字:

import re

text = """
a      b     c    123.67989

aa   bb  cc   56789.38475

b    c   a    56789.3456

bb   cc  aa   0.12409124

c    a   b    0.0123123
"""

digits = re.findall(r'\d+\.\d{1}', text)
print(digits)

# prints: ['123.6', '56789.3', '56789.3', '0.1', '0.0']