从文本文件Python 3.3中删除非数字字符

时间:2013-06-27 07:39:55

标签: python python-3.x

我的任务是从文本文件中删除所有非数字字符,包括空格,然后在旧字符旁边打印新结果,例如:

在:

sd67637 8

ssheiej44

后:

sd67637 8 = 676378

ssheiej44 = 44

由于我是初学者,我不知道从哪里开始这项任务。我按照其他用户的说明进行操作,但我并不清楚这是我到目前为止所做的事情。

text1 = open('/Users/student/Desktop/Harry.txt', 'r')
data = text1.readlines()
new_string = ''.join(ch for ch in data if ch.isdigit())
print(data, '=', new_string)

然而它仍然没有给我如上所示的预期效果。相反,我得到了这个:

    [] = 

有人可以解决这个问题,并以非专业术语解释。

2 个答案:

答案 0 :(得分:3)

您没有调用 text1.readlines方法。添加()

data = text1.readlines()

请注意,text1等文件对象可以作为迭代器使用。无需致电.readlines();只需直接遍历text1 即可。您的代码仍需要调整; .readlines()text1都会为您提供一系列

for line in text1:
     new_string = ''.join(ch for ch in line if ch.isdigit())
     print(data, '=', new_string)

在您的版本中,ch一次从文件中分配了整行,并且由于每行至少包含换行符,.isdigit() 总是为假

答案 1 :(得分:0)

我在previous question here上给你的回答几乎相同。

from string import ascii_letters

with open('/Users/student/Desktop/Harry.txt') as f:
    for line in f:
        print (line, '=', line.translate(None, ascii_letters+' '))