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

时间:2014-11-21 14:02:11

标签: python string

我正在尝试一段时间迭代字符串列表并删除字符串的第一个单词,方法是将字符串的剩余部分附加到另一个列表中,这就是我写的内容:

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)

一切似乎都存在,但我收到语法错误......我错过了什么?

提前致谢!

2 个答案:

答案 0 :(得分:1)

有两种语法错误。首先,这一行中缺少右括号:

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

我认为这就是你想要的。

答案 1 :(得分:-1)

这是工作代码: -

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