我有一个我正在解析的文件,在同一列的每一行上都是其中一个值; 0,1或-1。我想解析这个,以便数值全部符合如下。我正在尝试通过带有和/或运算符的if语句。我无法理解和/或当我用print语句测试它时,输出打印1或打印0' s。
Desired output:
0
1
-1
if number.startswith('1' and '0'):
return number.append(' ')
print number
答案 0 :(得分:3)
'1' and '0'
只解析为'0'
:
>>> '1' and '0'
'0'
布尔运算符与英语语法结构不同!
str.startswith()
method需要一组值来测试:
number.startswith(('1', '0'))
如果您的字符串以True
开头或以'1'
开头,则会返回'0'
。
但是,在这种情况下,您只需使用string formatting填写您的号码:
return format(int(number), '-2d')
这会将您的号码填充到两个字符宽的字段,留下负号的空格:\
>>> format(-1, '-2d')
'-1'
>>> format(0, '-2d')
' 0'
>>> format(1, '-2d')
' 1'
答案 1 :(得分:0)
问题是表达式'1' and '0'
正在评估为bool
,并将评估为'0'
。整个表达式将为if number.startswith('0'):
,因此永远不会检查'1'
。
你应该改变这个
if number.startswith('1' and '0'):
要
if number.startswith('1') or number.startswith('0'):
或者
if number[0] in ('1', '0'):
答案 2 :(得分:0)
首先,你正在使用具有连贯意图的.startswith,但是这些参数不起作用,试试这个:
if number.startswith('1', '0'):
其次,.append不能做你想要的。如果您想在数字前添加空格,如果它以“1”或“0”开头,请尝试以下操作:
if number.startswith('1', '0'):
number = ' ' + number
print number
此外,.append用于将项目添加到列表的末尾,例如:
>>> list = [1, 2]
>>> list.append('x')
>>> list
[1, 2, 'x']