在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来实现其他功能