Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从文件读取int时出现问题_Python_File - Fatal编程技术网

在Python中从文件读取int时出现问题

在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:

如果一行中有多个整数,如何将该行转换为整数。(在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:
       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"]