Python:如何更改字符串或列表元素

时间:2011-11-15 04:40:19

标签: python string tabs split

我一直在阅读文件,我很难摆脱“\ t” 我已尝试使用i.strip().split("\t")[1]并将其附加到列表中。但如果连续多个标签,它不是非常有用 例如: 如果我做我所描述的我得到的

z=['\t\t\t\twoman-in-lingerie', 'newspaper-photo', 'reference-to-marie-antoinette', '\tempty-grave', '\t\t\tbased-on-play', '\t\t\tcanadian-humor', '\t\t\tsitcom', 'hypocrisy', 'stripper']

现在我不知道如何删除这些标签,我一直试图通过列表并自行更改每个元素它是不成功的

5 个答案:

答案 0 :(得分:2)

如果您不想要任何标签,可以在阅读完所有内容后使用filter

for item in my_list:
  item = item.filter(lambda x: x != '\t', item)

答案 1 :(得分:2)

如果您只是想删除标签,可以使用此列表理解:

l2 = [item.strip('\t') for item in l1]

这将消除每个元素上的任何前导或尾随标签。

答案 2 :(得分:0)

您可以做的最好的事情是使用replace函数,将标签('\ t')替换为空字符串(''):

>>> z = ['\t\t\t\twoman-in-lingerie', '\t\t\tsitcom']
>>> map(lambda x: x.replace('\t',''), z)
['woman-in-lingerie', 'sitcom']

答案 3 :(得分:0)

这可能会给你一个想法:

>>> import re
>>> re.sub('\t+','\t', 'hello\t\t\t')
'hello\t'
>>> 

答案 4 :(得分:0)

z = '''\t\t\t\twoman-in-lingerie
newspaper-photo\t\t\t\t          reference-to-marie-antoinette
\tempty-grave
\t\t\tbased-on-play
\t\t\tcanadian-humor\t\t\t
\t\t\tsitcom
hypocrisy\t\t\t\t\tstripper'''


import re

def displ(x):
    return '\n'.join(map(repr,x.splitlines(True)))


print displ(z)

print '-------------------------------'
zt = re.sub('\t+',' ',z)
print displ(zt)

print '-------------------------------'
zt = re.sub('(^\t+)|(\t+)',
            lambda mat: '' if mat.group(1) else ' ',
            z,
            flags = re.MULTILINE)
print displ(zt)

print '-------------------------------'
zt = re.sub('(^[ \t]+)|([ \t]+)',
            lambda mat: '' if mat.group(1) else ' ',
            z,
            flags = re.MULTILINE)
print displ(zt)

结果

'\t\t\t\twoman-in-lingerie\n'
'newspaper-photo\t\t\t\t          reference-to-marie-antoinette\n'
'\tempty-grave\n'
'\t\t\tbased-on-play\n'
'\t\t\tcanadian-humor\t\t\t\n'
'\t\t\tsitcom\n'
'hypocrisy\t\t\t\t\tstripper'
-------------------------------
' woman-in-lingerie\n'
'newspaper-photo           reference-to-marie-antoinette\n'
' empty-grave\n'
' based-on-play\n'
' canadian-humor \n'
' sitcom\n'
'hypocrisy stripper'
-------------------------------
'woman-in-lingerie\n'
'newspaper-photo           reference-to-marie-antoinette\n'
'empty-grave\n'
'based-on-play\n'
'canadian-humor \n'
'sitcom\n'
'hypocrisy stripper'
-------------------------------
'woman-in-lingerie\n'
'newspaper-photo reference-to-marie-antoinette\n'
'empty-grave\n'
'based-on-play\n'
'canadian-humor \n'
'sitcom\n'
'hypocrisy stripper'

我使用函数 displ()以显示转义字符的方式显示