好的,所以我正在开发一个可以做一系列事情的程序。首先,它将读取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.")
答案 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()
模式处理文件。