如何删除字符串中的间距?

时间:2014-03-22 00:13:16

标签: python space python-3.3

我正在使用Python 3.3。

例如,如果我打开一个文件并使用file.readline()读取第一行,我将得到第一行的字符串。

假设第一行是:line = file.readline()

line现在为:'Dumbledore, Albus\n'

如果我用过:

a = line.strip().split(',')

我会得到:['Dumbledore', ' Albus']

这是我遇到问题的地方。我不希望在名字'Albus'之前有额外的空格。

我可以用什么(简单)方法删除它?

这整个任务的目的是交换名字和姓氏(例如,从'Dumbledore, Albus''Albus, Dumbledore'

7 个答案:

答案 0 :(得分:2)

只需使用str.strip()

s = 'Dumbledore, Albus'
l = [x.strip() for x in s.split(',')]

答案 1 :(得分:1)

当您在strip()输出上使用readline()功能时,您使用了想要使用的正确工具,尽管位置错误。

>>> ' a '.strip()
'a'

具体来说,在您的上下文中,您可能希望执行类似这样的操作

>>> a = ['Dumbledore', ' Albus']
>>> a = [x.strip() for x in a]
>>> a
['Dumbledore', 'Albus']

您正在做的是一个非常简单的list comprehension,并将最终结果分配给原始数组。

答案 2 :(得分:0)

您可以在Python中尝试:

input = ['Dumbledore', ' Albus']
output = [re.sub(' *', '', x) for x in input]

答案 3 :(得分:0)

使用条带或lstrip

要容易得多
a = ['Dumbledore', ' Albus']
a = [item.strip() for item in a]

鉴于您上一次编辑

names = []
for line in open(myfile).readlines(): #read and act on each line sequentially
    line_list = line.split(',')     # split each line on the comma
    line_list = [item.strip() for line in line_list] # get rid of spaces and newlines
    line_list.reverse()  # reverse the list
    new_name_order = ','.join(line_list)   # join the items with a comma
    names.append(new_name_order)   # add the name to the list of names

答案 4 :(得分:0)

最简单的解决方案是分成', '而不是','。所以你这样做:

a = line.strip().split(', ')

答案 5 :(得分:0)

为了完整性,您还可以使用正则表达式:

import re

line = 'Dumbledore, Albus\n'
reformatted = re.sub('(.*?), (.*)', r'\2, \1', line)
# Albus, Dumbledore

可以改编为:

rx = re.compile('(.*?), (.*?)\n')
with open('yourfile') as fin:
    lines = [rx.sub('\2, \1', line) for line in fin]

答案 6 :(得分:0)

作为一个单行:

', '.join([x.strip() for x in line.split(',')][::-1])

注意: [::-1]反转一个列表,即:

[1, 2, 3][::-1]
=> [3, 2, 1]

对你的情况更清楚一点:

lastname, firstname = [x.strip() for x in line.split(',')]
name = firstname + ', ' + lastname