迭代一个字符串列表,并将所有字符串附加到另一个字符串,除了第一个字

问题描述:

我尝试了一段时间迭代字符串列表并删除字符串的第一个字,通过追加剩余的串到另一个列表,这里就是我写道:迭代一个字符串列表,并将所有字符串附加到另一个字符串,除了第一个字

from sys import argv 

my_file = argv[1] 
output_list = [] 
count = 1 

with open(my_file) as input_file: 
    for line in input_file.readlines(): 
     while count < len(line.split(' '): 
      ouput_list.append(line.split(' ')[count]) 
      count += 1 
     count = 0 

with open('out_file.txt', 'w') as output_file: 
    for line in output_list: 
     output_file.write(line) 

一切似乎都到位,但我得到一个语法错误......我在想什么?

提前致谢!

+1

至少告诉我们您做了什么语法错误。 – 2014-11-21 14:02:55

+2

你错过了关闭'len(line.split('')'关闭它,并且在你的rog中你也有其他问题 – 2014-11-21 14:07:02

有两个语法错误。首先,有在此行缺少右括号:

while count < len(line.split(' '): 

其次,你在这一行拼错output_list

ouput_list.append(line.split(' ')[count]) 

除此之外,你的代码似乎是逻辑上的缺陷,因为它消除了所有的空格字之间。

如果你的目标是要删除文件和周围的空白的第一个字,同时使其他一切完好,这两条线应该做的伎俩:

text = open(my_file).read() 
text = re.sub('^\s*\w+\s*', '', text) 

它也可以写成一行,但我更喜欢两行清晰。

你需要的re模块,让你完整的程序是这样的:

import sys, re 

my_file = sys.argv[1] 

text = open(my_file).read() 
text = re.sub('^\s*\w+\s*', '', text) 

with open('out_file.txt', 'w') as output_file: 
    output_file.write(text) 

如果您使用该输入文件:

ant bear cat 
dog elephant 

你会得到这样的输出:

bear cat 
dog elephant 

我想这就是你想要的。

这是工作代码: -

from sys import argv 

my_file = argv[1] 
output_list = [] 
count = 1 

with open(my_file) as input_file: 
    for line in input_file.readlines(): 
     while count < len(line.split()): 
      output_list.append(line.split()[count]) 
      count += 1 
     count = 0 

with open('out_file.txt', 'w') as output_file: 
    for line in output_list: 
     output_file.write(line+'\n') # should write in new line 
+0

如果你解释了你改变了什么以及为什么 – jonrsharpe 2014-11-21 14:18:24

+0

@jonrsharpe感谢(3)你错过了右括号,正如我在评论中所提到的'len(line.split())'和这里'ouput_list.append'它的'ouput_list'这个名字是错误的,你最好使用split() ('')'并将数据插入新行或空格中,所以'output_file.write(line +'\ n')'或'output_file.write(line +'\ t')' – 2014-11-21 14:22:28

+1

...在答案中。 – jonrsharpe 2014-11-21 14:44:23