我正在使用Python 3.3。
例如,如果我打开一个文件并使用file.readline()
读取第一行,我将得到第一行的字符串。
假设第一行是:line = file.readline()
。
line
现在为:'Dumbledore, Albus\n'
。
如果我用过:
a = line.strip().split(',')
我会得到:['Dumbledore', ' Albus']
这是我遇到问题的地方。我不希望在名字'Albus'
之前有额外的空格。
我可以用什么(简单)方法删除它?
这整个任务的目的是交换名字和姓氏(例如,从'Dumbledore, Albus'
到'Albus, Dumbledore'
。
答案 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