在Python中从文件读取int时出现问题
如果一行中有多个整数,如何将该行转换为整数。(在finish中,行可能是“2 4”,finish=int(行)原因和错误 另外,我如何访问底部for循环中转换的特定元素。我知道我可以打印列表,但我需要比较特定元素在Python中从文件读取int时出现问题,python,file,Python,File,如果一行中有多个整数,如何将该行转换为整数。(在finish中,行可能是“2 4”,finish=int(行)原因和错误 另外,我如何访问底部for循环中转换的特定元素。我知道我可以打印列表,但我需要比较特定元素 with open(r'C:\Users\Andrew\Documents\College\Theory of Computation\dfa19btest.txt', 'r') as f: for i, line in enumerate(f): if i == 0:
with open(r'C:\Users\Andrew\Documents\College\Theory of Computation\dfa19btest.txt', 'r') as f:
for i, line in enumerate(f):
if i == 0:
language = line
print("Language =", language)
if i == 1:
numstates = int(line)
print ("Number of states =", numstates)
if i == 2:
start = int(line)
print ("Start =", start)
#if i == 3:
#finish = int(line)
#print ("Finish =", finish)
if i >= 4:
transitions.append(line)
print ("Transitions = ", transitions[i -4])
for x in range(numstates-1, -1, -1):
print(transitions[x])
# string is in 4 a 2 b 3 format
# if [0] == [3] then answer insert [2]* into answer array
# if [2] and [4] are followed by same number insert [2]|[4]
要将字符串解析为整数,请使用: 例如:
str_var = '123'
int_var = int(str_var) # int_var now have the interger value 123
您需要决定如果任何输入无效(即非整数),应该发生什么。下面是Python2的简化示例。请注意try/except子句
with open(r'C:\Users\Andrew\Documents\College\Theory of Computation\dfa19btest.txt', 'r') as f:
for i, line in enumerate(f):
if i == 0:
language = line
print("Language =", language)
try:
if i == 1:
numstates = int(line)
transitions = np.array(numstates)
print ("Number of states =", numstates)
if i == 2:
start = int(line)
print ("Start =", start)
if i == 3:
finish = int(line)
print ("Finish =", finish)
except ValueError:
print "Invalid int (%s) on line: %d" % (line, i) # use print() for Python3
break
对于一行中的多个整数,str.split()函数将非常有用:
你的问题的结尾不清楚——你想对特定的元素做什么?应该是
numstates=int(numstates)
,但是在这两个for循环中使用i
是危险的:你不一定需要枚举(使用f.next()
)谢谢,不过如果一行中有多个整数,是否还需要其他内容。联机完成该行的内容为“2 4”遇到了一个错误。这与您原来的问题有所不同,原来的问题意味着每行只能读取一个整数。如果有多个整数,您想怎么办?是的,很抱歉,我忘记了finish可以有多个状态。这应该是将NFA转换为正则表达式。我认为将其作为字符串使用会有效,并且我可以进行协作用过渡元素替换其元素。
a = "1 2 3 4"
print a.split() -> ["1", "2", "3", "4"]