2

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

前:

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)

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

    [] = 

有人可以解决这个问题并用外行的方式解释一下。

4

2 回答 2

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()因此始终为 False。

于 2013-06-27T07:40:48.623 回答
0

几乎和我在你之前的问题上给你的答案 一样

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+' '))
于 2013-06-27T07:49:42.530 回答