Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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脚本回溯:无效的文本_Python_Ascii_Traceback - Fatal编程技术网

从Python脚本回溯:无效的文本

从Python脚本回溯:无效的文本,python,ascii,traceback,Python,Ascii,Traceback,简而言之,Python脚本应该做的是加载和计算ASCII类型的文件 对于一些以前预处理过的文件,它可以正常工作,而对于我的文件,它会抛出一个错误。在任何情况下,我的文件看起来都与它应该的不同(输入方面) 这里的错误很明显 'nrows'无法转换为int 然而,出于某种原因,您调用此类型时,rows不是有效整数的字符串表示形式,似乎包含字符串'nrows' 例如: >>> type_rows = "nrows" >>> int(type_rows) Trac

简而言之,Python脚本应该做的是加载和计算ASCII类型的文件

对于一些以前预处理过的文件,它可以正常工作,而对于我的文件,它会抛出一个错误。在任何情况下,我的文件看起来都与它应该的不同(输入方面)



这里的错误很明显

'nrows'
无法转换为
int

然而,出于某种原因,您调用此
类型时,rows
不是有效整数的字符串表示形式,似乎包含字符串
'nrows'


例如:

>>> type_rows = "nrows"
>>> int(type_rows)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'nrows'
>>> 
>>键入_rows=“nrows”
>>>int(类型_行)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“nrows”
>>> 

您要在单个空格上拆分:

option= []
for elem in content:
    option.extend(elem.strip().split(" "))
你在某个地方有一个额外的空间,所以你所有的偏移量都是1

您只需*删除
str.split()
的参数即可解决此问题。然后,文本将自动剥离,并在任意宽度的空白上拆分。文件中是否有1、2或20个空格无关紧要,然后:

with open("options_PDI.txt") as f:
    option = f.read().split()
请注意,我甚至不需要将文件拆分成行或去掉换行符

请注意,您对文件的处理仍然相当脆弱;您希望在某些位置存在某些值。如果文件包含
标签值
样式行,则可以将整个文件读入字典:

with open("options_PDI.txt") as f:
    options = dict(line.strip().split(None, 1) for line in f if ' ' in line)
并使用该字典处理各种值:

type_ncols = int(options['ncols'])

type\u-ncols
type\u-nrows
是一个带有文本
'nrows'
的字符串。我打赌是后者。您必须为我们共享更多代码才能告诉您其他信息。异常错误消息非常清楚,可以理解您的文件包含无法转换为整数值的
nrows
字符串。奇怪的是,我查看了ASCII文件,它们在开始时都有
ncols
nrows
。稍后我将分享更多的代码。因此,请仔细查看代码以及它是如何解析这些文件的。我们无法告诉您这里出现了什么问题,因为您a)没有共享代码,b)没有共享文件。给我们一个机会来重现这个问题,我们可能会有所帮助。谢谢,我当时弄糊涂了:)事实上,这是真的。我的意思是,与工作的另一个ASCII文件相比,我遇到问题的那个文件在所有行的第一列上都有一个额外的空白,没有特别的原因。这不应该产生。谢谢很可能这就是问题所在。现在,不知何故,我必须弄清楚这一部分。有没有办法通过在脚本中添加一些内容来忽略这一点?我想我做错了什么。我还有其他错误。问题是,
option.txt
不过是一个获取路径和一些参数的地方。@Geosphere:我添加了另一种解析文件的方法;把整件事读到字典里,然后用它把选项映射到值。我似乎解决不了这个问题。显然,我笨到会得到一个ValueError:dictionary update sequence元素#10的长度为0;2是必需的
with open("options_PDI.txt") as f:
    option = f.read().split()
with open("options_PDI.txt") as f:
    options = dict(line.strip().split(None, 1) for line in f if ' ' in line)
type_ncols = int(options['ncols'])