0

每个表达式都在单独的行上。给定

34-2
34-5
34-3

我正在寻找

34-2=28
34-5=29
34-3=31

或者,这也会有所帮助:鉴于:

34-2=5
34-5<=34
34-3=31

我正在寻找

!   34-2=5
    34-5<=34
    34-3=31

在哪里 !是一些表明不平等或平等是错误的迹象。我正在寻找处理文本文件的东西。

4

1 回答 1

1

Chris Taylor是完全正确的,这是它在 python 中给出的:

>>> s="""34-2
34-5
34-3
34-2==5
34-5<=34
34-3==31
"""
>>> for line in s.split('\n'):
    # Test line is not empty
    if line:
        operators = ('!=', '<=', '>=', '==', '<', '>')
        op_found = False
        # Stop at 1st operator found
        for op in operators:
            if op in line:
                op_found = True
                if not eval(line):
                    print '!', line
                else:
                    print '+', line
                break
        # If no operator found, we assume we want the result of the operation
        if not op_found:
            print '{0}={1}'.format(line, eval(line))


34-2=32
34-5=29
34-3=31
! 34-2==5
+ 34-5<=34
+ 34-3==31
>>> 

几点说明:

  • 我使用==而不是=因为这就是python中的平等方式(=仅用于分配)
  • 我还曾经+表明断言对于可读性是正确的
  • 我使用了一个字符串s,但你当然可以使用一个文件(你可以for line in s.split('\n'): for line in open(file_path):
  • 请记住,每次使用时eval,您都可能被黑客入侵(请注意文件中的行...)
于 2012-05-14T07:54:22.333 回答