对于我的项目,我做了一些事情并从命令行输出中提取特定行,然后将其插入列表中。从那里我将列表导出到训练文件中,以便稍后使用学习算法。问题是当我从命令行中提取信息时,它会拉
"Number\n"
当我将列表附加到文本文件时,它不会打印
Number, Number, Number
而是正在打印
Number
Number
Number
它正在应用换行符,这对我来说几乎没用。通过一些谷歌搜索我发现这个链接 Strip all the elements of a string list 解释我认为正是我需要解决的问题。它删除换行符并将列表转换为我以后需要的内容。除了任何原因它不起作用。
这是我的代码
def exportlist(self):
file = open('Trainingfile.txt','a+')
# i pass it into a variable since i ran into some odd errors if i try
# to apply the map function to self.vectorlist
my_list= self.vectorlist
print(my_list) # prints [ 'number\n', 'number\n'......]
# WHAT THE ABOVE LINK AND OTHERS SAID SHOULD WORK
strip_list= map(str.rstrip('\n'), my_list)
print(strip_list) # prints "map object at 0x00000002C...."
self.vectorlist = strip_list # test code
print(self.vectorlist) # prints same as strip_list
file.close()
如果我使用chr.split而不是strip,我会得到类似的结果。 打印my_list会打印格式不正确的列表。 打印应该是格式正确的列表的strip_list,打印我认为是内存位置“0x0000000002C ....”我在网上发现的一切都告诉我它不应该打印这个。它应该打印格式正确的列表。有谁知道为什么会这样?每次我使用map函数时都会发生这种情况。我已经尝试了多种方法从我的列表中删除“\ n”但它总是返回相同的东西。
答案 0 :(得分:2)
您需要将结果转换为列表:
strip_list = list(map(str.rstrip('\n'), my_list))
在Python 3 map()
中返回一个地图对象。这是一个迭代器。您可以使用list()
围绕它转换为列表。
答案 1 :(得分:0)
来自文档...
Help on class map in module builtins:
class map(object)
| map(func, *iterables) --> map object
|
| Make an iterator that computes the function using arguments from
| each of the iterables. Stops when the shortest iterable is exhausted.
class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
因此,您使用列表调用来包装迭代器以获取列表,例如:
list(map(f, list))