我在文本文件中有一堆URL,但我只对URL的一部分感兴趣,我想将该部分保存到另一个文档中。我一次只读了1行,然后使用它写一个文件:
from sys import argv
script, sol , save = argv
data = open(sol)
indata = data.read()
result = indata[51:85]
result2 = "http://mars.jpl.nasa.gov/msl-raw-images/msss/00003/mcam/" + result + ".jpg"
output = open(save, 'w')
output.write(result2)
data.close()
output.close()
但是我无法将其移植到for循环中:
from sys import argv
script, sol = argv
data = open(sol)
indata = data.read()
for line in indata:
indata[51:85],
data.close()
我试图在屏幕上打印出来,看看为什么会出错,但我只能使用empy线。我被困了,我希望你能帮我一把。
from sys import argv
script, sol, save = argv
data = open(sol)
indata = data.read()
def get_line():
for line in indata.splitlines():
print indata[51:85]
result = indata[51:85]
result2 = "http://mars.jpl.nasa.gov/msl-raw-images/msss/00003/mcam/" + result + ".jpg"
output = open(save, 'w')
output.write(result2)
output.close()
get_line()
data.close()
我设法做到了这一点,但我只能在新文档中保存第一行。其余部分打印在屏幕上,但未保存在新文档中
答案 0 :(得分:1)
修改强> 您的控制流程已关闭。您需要在循环之前打开文件
result=...
行可能有点令人困惑所以我会解释它
首先使用.replace
更改行中的文字。然后它使用索引[:-4]
删除最后4个字符。最后,它将字符串'-br.jpg'附加到整个事物
from sys import argv
script, sol, save = argv
def get_line():
data = open(sol)
output = open(save, 'w')
for line in data: #for each line in the input file
result = line.replace('msl/multimedia/raw/?rawid=', 'msl-raw-images/msss/00003/mcam/')[:-4] + '-br.jpg\n'
output.write(result)
output.close()
data.close()
get_line()
你可以迭代文件本身的行
from sys import argv
script, sol = argv
data = open(sol)
for line in data:
print line[51:85]
data.close()
似乎更接近你想要的。
执行.read()
时,您将整个文件的内容作为单个字符串抓取。那么你要在整个字符串中索引字符,而不是特定的行。在上面的代码中,您一次索引到每一行。
此外,由于这是一个网址,而您只对一个部分感兴趣,因此.split
方法可以使您的索引更容易。它返回通过将原始字符串拆分为特定字符而生成的字符串列表。例如:
>>> line = 'stackoverflow.com/posts/11908027/'
>>> line.split('/')
['stackoverflow.com', 'posts', '11908027', '']
>>> line.split('/')[2]
'11908027'
>>> line.split('/')[1]
'posts'
答案 1 :(得分:0)
尝试:
for line in indata.splitlines():
print indata[51:85]
答案 2 :(得分:0)
我会研究“split”和“splitline”,它们在分解标准文本时非常有用,例如url。您可以在这里了解更多信息: http://docs.python.org/library/stdtypes.html
该列表还将提供有关partition()的一些信息,这些信息也可能对您有用。它需要一个字符串和分隔符,给出一些关于如何存储数据的选项。