从python中的列表条目中删除空格和换行符

时间:2017-11-01 04:59:57

标签: python list

好的,所以我正在开发一个可以做一系列事情的程序。首先,它将读取2个外部文件的内容,然后它将获取所述文件的每一行并将这些行转换为列表,这两个列表将合并为一个列表。

每个文件都是一个名称列表,前面有一个条目编号,后面是一个新行。因此,每个文件都是100到200个条目的列表,格式如下:

1.  Michael \n
2.  Ben \n
3.  Ken \n
4.  David \n

所以程序打开文件,然后将每行读入列表。

现在我的问题出现了。我需要从每一行中删除条目号,空格和新行命令。

我正在为每一行使用aline.aplit(''),以便:

1.  Michael \n

会变成:     ['1。 ','迈克尔\ n']

好的,所以从这里开始我只需要去除'\ n'然后将[1]附加到此文件的名称列表中。

这是我收到错误的地方。具体来说:

  

追踪(最近一次通话):    文件“H:/ ITP100 / assignments / Chapter 7 / Names-3.py”,第30行,in      entry1 = value_xy.rstrip('\ n')   AttributeError:'list'对象没有属性'rstrip'

以下是完整代码:

Name1 = (input("Enter a name: "))
file_xy = open("BoyNames.txt", "r")
list_xy = []
file_xx = open("GirlNames.txt", "r")
list_xx = []
test_boys =[]
test_girls =[]
entry1 = []
for aline in file_xy:
    value_xy = aline.split(' ')
    entry1 = value_xy.rstrip('\n')
    test_boys.append[1]
    #entry2 = entry1[1].strip()
    list_xy.append(entry1[1])
for aline in file_xx:
    value_xx = aline.split(' ')
    entry_xx1 = value_xx.rstrip('\n')
    test_girls.append(entry_xx1)
    #    entry_xx2 = value_xx[1].lstrip()
    list_xx.append(entry_xx1)
    #print(list_xy)
names = list_xy + list_xx
print("This is the list \'names\'. This is the combined list of all names."+'\n'+str(names))
print("This is the list \'test_boys\'. This is the post-stripping list of boy names."+'\n'+str(test_boys))
print("This is the list \'test_girls\'. This is the post-stripping list of girl names."+'\n'+str(test_girls))
if Name1 in names:
    print(Name1+" is in the list.")
else:
print(Name1+" is not in the list.")

2 个答案:

答案 0 :(得分:1)

value_xy = aline.split(' ')

上面的代码返回列表

entry1 = value_xy.rstrip('\n')

rstrip()/ strip()适用于字符串,因此这会导致for循环错误

所以你可以像下面的例子一样迭代和追加

entry1 = []
for item in value_xy:
    entry1.append(item.rstrip('\n'))

我希望它有效

答案 1 :(得分:1)

在拆分之前使用strip()方法删除换行符。

例如,以下是从以下字符串中提取'name'部分的方法:

s = '1.  Michael \n'

name = s.strip().split()[1]
print(repr(name)) # 'Michael' => no extra spaces

假设我有'names.txt'文件,内容为:

1.  Michael 
2.  Ben 
3.  Ken 
4.  David 

然后我可以通过这种方式从文件中获取名称:

with open('names.txt') as f:
    names = []
    for line in f.readlines():
        line_elements = line.strip().split()
        if len(line_elements) > 1: # checking for a line in different format 
            name = line_elements[1]
        names.append(name)

print(names) # ['Michael', 'Ben', 'Ken', 'David']

请注意,最好通过with open()模式处理文件。