【发布时间】:2012-08-01 18:51:10
【问题描述】:
所以我想做的事情似乎比较简单,但对于我的生活,我就是无法完全做到。我有一个 .txt 文件,例如
4 2
6 5 1
9 4 5
并且我希望它的信息能够像这样提供给我(即,除非有必要,否则我不需要编写新的 .txt 文件。)...
3 1
5 4 0
8 3 4
或者,从每个数字中减去1,但格式保持不变。原始数字中永远不会有大于1 的数字,因此不可能出现负数。这整个头痛是由于将索引转换为以0而不是1开头。可能使事情复杂化的是原始文件打印出来的样子
['4 2 /n','6 5 1 /n', '9 4 5 /n']
我做了什么
好吧,它是我在 StackOverflow 上的 found 的 different 的混搭,但我认为我会以最繁琐的方式进行处理。而this 在我实现它时没有任何意义.. 尽管它可能与空格问题处于同一轨道..
origianl = open(file, 'r')
for line in original.readlines():
newline = line.replace(" \n","")
finalWithStrings.append(newline)
finalWithIntegers = [map(int,x) for x in finalWithStrings]
finalWithIntegers[:] = [x-1 for x in finalWithIntegers]
我的想法是,我需要删除“/n”并将这些字符串转换为整数,这样我就可以从中减去1。并以某种方式保持格式。格式必须相同,因为每一行都包含另一个文件的类似索引行的信息,这一点很重要。我不想在最终结果(或打印语句)中看到“/n”,但我仍然想要换行开始的效果。然而,上面的代码不起作用有两个原因(我知道)。
int(n[:]) 抛出一个错误,因为它不喜欢空格,当我在其中输入一个值(比如 0)时,代码会在每一行上打印第一个数字并减去一个.. 并将其放入全部在一条线上。
[3, 5, 8]
所以,取出一个回车并输入另一个似乎是多余的,但我确实需要保持格式,并且有办法获取所有数字!
这也不起作用:
for line in original.readlines():
newline = line.replace(" \n","")
finalWithStrings.append(newline)
finalWithIntegers = [map(int,x) for x in finalWithStrings]
finalWithIntegers[:] = [x-1 for x in finalWithIntegers]
但不仅仅是错误的输出,而是错误:
ValueError:invalid literal for int() with base 10:''
有人对我在这里做错了什么以及如何解决这个问题有任何想法吗?我正在使用 Python 2.6 并且是初学者。
【问题讨论】:
标签: python list formatting integer