删除包含十进制数的行

时间:2015-01-11 00:13:37

标签: python python-2.7 line

我正在尝试删除包含十进制数的行。例如:

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中编码。

4 个答案:

答案 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返回文件中所有行的列表。