【发布时间】:2016-05-15 23:03:53
【问题描述】:
我正在尝试这样做:如果最后一列是 1-5 的负数,则将第二列和最后一列写入文件“neg.txt”。如果最后一列是正数,则需要将第二列和最后一列写入“pos.txt”。我的两个输出文件在执行后都是空的。当我认为 if 语句 可以处理多个条件时,我不知道代码有什么问题。我也尝试过使用正则表达式,但它不起作用,所以我尽可能简单地查看什么不起作用。
输入文件如下所示:
abandon odustati -2
abandons napusta -2
abandoned napusten -2
absentee odsutne -1
absentees odsutni -1
aboard na brodu 1
abducted otet -2
accepted prihvaceno 1
我的代码是:
from urllib.request import urlopen
import re
pos=open('lek_pos.txt','w')
neg=open('lek_neg.txt','w')
allCondsAreOK1 = ( parts[2]=='1' and parts[2]=='2' and
parts[2]=='3' and parts[2]=='4' and parts[2]=='5' )
allCondsAreOK2 = ( parts[2]=='-1' and parts[2]=='-2' and
parts[2]=='-3' and parts[2]=='-4' and parts[2]=='-5' )
with open('leksicki_resursi.txt') as pos:
for line in pos:
parts=line.split() # split line into parts
if len(parts) > 1: # if at least 2 columns (parts)
if allCondsAreOK:
pos.write(parts[1]+parts[2])
elif allCondsAreOK2:
neg.write(parts[1]+parts[2])
else:
print("nothing matches")
【问题讨论】:
-
如果parts是你的列,我认为你的条件应该使用OR而不是AND
-
如果我在两种情况下都使用 OR 而不是 AND 则只有 'lek_neg.txt' 用于负数(如果已满,但正数仍为空)
-
那是因为你必须在 for 里面做条件,而不是在外面(不是在它之前)
-
是否可以将所有这些条件放在 if 语句中?因为它不是这样工作的,如果我把这个条件放在 for 循环中,它会在行上给出一个错误:pos.write(parts[1]+parts[2]) - UnsupportedOperation: not writable。谢谢
标签: regex python-3.x split