-4

我想删除文本中的所有数字输入。我必须添加什么语法?请帮忙......这是我现在的python代码

from re import compile 
list=compile("(\w[\w']*)").findall(open(raw_input('Input file: '),'r').read().lower())
fileOutput=open(raw_input('Output file: '),'w')
for word in sorted(set(list)):
        print>>fileOutput, word,':', '\t', list.count(word), 'kata'
fileOutput.close()
4

1 回答 1

1

您可以使用filter而不是正则表达式:

>>> def is_not_digit(s):
...     return not s.isdigit()
...
>>> filter(is_not_digit, 'h3ll0')
'hll'

在 Python 3.x 中你必须使用''.join(..),因为filter返回迭代器而不是 Python 3.x 中相同类型的值:

''.join(filter(is_not_digit, 'h3ll0'))

如果你真的必须使用正则表达式:

>>> re.sub(r'\d+', '', 'h3ll0')
'hll'

完整代码:

import sys

def is_not_digit(s):
    return not s.isdigit()

def drop_digits(s):
    return filter(is_not_digit, s)


filepath = raw_input('Input file: ')
with open(filepath) as f:
    sys.stdout.writelines(drop_digits(line) for line in f)
于 2013-09-15T06:46:35.747 回答