我正在尝试删除包含十进制数的行。例如:
82.45 76.16 21.49 -2.775
5 24 13 6 9 0 3 2 4 9 7 11 54 11 1 1 18 5 0 0
1 1 0 2 2 0 0 0 0 0 0 0 14 90 21 5 24 26 73 13
20 33 23 59 158 85 17 6 158 66 15 13 13 10 2 37 81 0 0 0
1 3 0 19 8 158 75 7 10 8 5 1 23 58 148 77 120 78 6 7
158 80 15 10 16 21 6 37 100 25 0 0 0 0 0 3 1 10 9 1
0 0 0 0 11 16 57 15 0 0 0 0 158 76 9 1 0 0 0 0
22 17 0 0 0 0 0 0
50.04 143.84 18.52 -1.792
3 0 0 0 0 0 0 0 36 0 0 0 2 4 0 1 23 2 0 0
8 24 4 12 21 9 5 2 0 0 0 4 40 0 0 0 0 0 0 12
150 11 2 7 12 16 4 59 72 8 30 88 68 83 15 27 21 11 49 94
6 1 1 8 17 8 0 0 0 0 0 5 150 150 33 46 9 0 0 20
28 49 81 150 76 5 8 17 36 23 41 48 7 1 16 88 0 3 0 0
0 0 0 0 36 108 13 9 2 0 3 61 19 26 14 34 27 8 98 150
14 2 0 1 1 0 115 150
114.27 171.37 10.74 -2.245
..................并且这种模式持续了数千行,同样我有大约3000个具有相似数据模式的文件。
所以,我想删除包含这些十进制数的行。在大多数情况下,每8行都有十进制数,因此我尝试使用awk' NR%8! == 0' <文件名。但问题是,并非数据库中的所有文件都将其每第8行作为十进制数。那么,有没有办法可以删除有十进制数的行?我在ubuntu的python 2.7中编码。
答案 0 :(得分:4)
您可以查找包含小数限制器的行:
with open('filename_without_decimals.txt','wb') as of:
with open('filename.txt') as fp:
for line in fp:
if line.index(".") == -1: of.write(line)
如果您更喜欢使用sed,那就更干净了:
sed -i '/\./d' file.txt
答案 1 :(得分:1)
解决方案就像是
file = open('textfile.txt')
text = ""
for line in file.readLines():
if '.' not in line:
text += line
print text
答案 2 :(得分:0)
使用awk
:
awk '!/\./{print}' your_file
答案 3 :(得分:0)
deci = open('with.txt')
no_deci = open('without.txt', 'w')
for line in with_deci.readlines():
if '.' not in line:
no_deci.write(line)
deci.close()
no_deci.close()
readlines返回文件中所有行的列表。