Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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_Split - Fatal编程技术网

在python中拆分项目并附加一些项目

在python中拆分项目并附加一些项目,python,split,Python,Split,我想使用:拆分器拆分第一项,但拒绝第二项,等等 我有一个包含以下内容的文件: # cat myfile one:two three:four five:six:seven eight:nine:ten 我用python尝试的是: with open('myfile','r') as f: for line in f: for word in line.split(): item1=word.split(':')[0] it

我想使用
拆分器拆分第一项,但拒绝第二项,等等

我有一个包含以下内容的文件:

# cat myfile
one:two
three:four
five:six:seven
eight:nine:ten
我用python尝试的是:

with open('myfile','r') as f:
    for line in f:
        for word in line.split():
            item1=word.split(':')[0]
            item2=word.split(':')[1:]
            print 'Item1: '+item1+' Item2: '+str(item2)
结果是:

Item1: one Item2: ['two']
Item1: three Item2: ['four']
Item1: five Item2: ['six', 'seven']
Item1: eight Item2: ['nine', 'ten', 'eleven']
但我希望得到以下结果:

Item1: one Item2: two
Item1: three Item2: four
Item1: five Item2: sixseven
Item1: eight Item2: nineteneleven

你在那里做得很好,你错过的一件事是将拆分的元素连接回一个字符串,这是通过使用
join
完成的,你可以将分隔符更改为任何其他东西,如

separator = ""
for line in f.split("\n"):
    for word in line.split():
        item1=word.split(':')[0]
        item2=word.split(':')[1:]
        print 'Item1: '+item1+' Item2: '+separator.join(item2)
输出:

Item1: one Item2: two
Item1: three Item2: four
Item1: five Item2: sixseven
Item1: eight Item2: nineten
Item1: one Item2: two
Item1: three Item2: four
Item1: five Item2: sixseven
Item1: eight Item2: nineten

您可以拆分一次,或者
str.replace
或者
str.translate
要删除
,还应该拆分一次并解压缩:

In [6]: word,rest = s.split(":",1)

In [7]: rest = rest.translate(None,":")

In [8]: word,rest
Out[8]: ('eight', 'nineten')
使用替换:

In [9]: s = "eight:nine:ten"
In [10]: word,rest = s.split(":",1)    
In [11]: rest = rest.replace(":","")    
In [12]: rest
Out[12]: 'nineten'
对于python 3,需要传递dict进行翻译:

word, rest = s.split(":",1)
rest = rest.translate({ord(":"): ""})

print(word,rest)
您也不需要迭代分割线:

with open("test.txt") as f:
    for line in f:
        word, rest = line.rstrip().split(":", 1)
        print('Item1: {} Item2: {}'.format(word,rest.translate(None,":"))
输出:

Item1: one Item2: two
Item1: three Item2: four
Item1: five Item2: sixseven
Item1: eight Item2: nineten
Item1: one Item2: two
Item1: three Item2: four
Item1: five Item2: sixseven
Item1: eight Item2: nineten

好的,我没有注意到你只是想删除那里的
。不过,还有其他类似的例子;要我重新复制吗?重新复制到规范的“字符串列表”帖子。@MartijnPieters,我不认为这是真正的复制,没有必要同时拆分所有单词all@PadraicCunningham:因此,它要么是“拆分一次”规范的副本(其余部分只需使用
str.replace()
),要么是join规范的副本(连接其余元素)。选一个,所有这些步骤都很简单。@MartijnPieters,如果你知道怎么做的话,那就很简单了。OP提供了代码,他们得到的输出和他们期望的输出,这比很多人做的要多得多,虽然他们的问题是相关的,但它并不是被标记为重复的任何一个问题的完全重复。谢谢你,我希望你编辑
item2=
。因为我想使用item1和Item2来实现其他功能