我的文件内容如下
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])
我正在尝试检索最后一行信息,并且我不断收到超出范围的错误列表索引
答案 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']