删除包含小数的行
Delete lines that contain decimal numbers
我正在尝试删除包含小数的行。例如:
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' < file_name。但问题是,并非数据库中的所有文件都将每 8 行作为十进制数字。那么,有没有一种方法可以删除具有十进制数字的行?我在 python 2.7 中编码 ubuntu。
您可以只查找包含小数限制符的行:
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
解决方案类似于
file = open('textfile.txt')
text = ""
for line in file.readLines():
if '.' not in line:
text += line
print text
你试过这个吗:
使用 awk
:
awk '!/\./{print}' your_file
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 returns 文件中所有行的列表。
我正在尝试删除包含小数的行。例如:
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' < file_name。但问题是,并非数据库中的所有文件都将每 8 行作为十进制数字。那么,有没有一种方法可以删除具有十进制数字的行?我在 python 2.7 中编码 ubuntu。
您可以只查找包含小数限制符的行:
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
解决方案类似于
file = open('textfile.txt')
text = ""
for line in file.readLines():
if '.' not in line:
text += line
print text
你试过这个吗:
使用 awk
:
awk '!/\./{print}' your_file
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 returns 文件中所有行的列表。