我的任务是从文本文件中删除所有非数字字符,包括空格,然后在旧字符旁边打印新结果,例如:
在:
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)
然而它仍然没有给我如上所示的预期效果。相反,我得到了这个:
[] =
有人可以解决这个问题,并以非专业术语解释。
答案 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+' '))