我有一个从输出以下内容的文本文件中读取的列表:
['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
我想从每个元素中删除\ n,但是使用.split()不适用于仅列出字符串的情况(这很令人讨厌,因为这是一个字符串列表)。
如何从每个元素中删除\ n,以便获得以下输出:
['/Users/myname/Documents/test1.txt', '/Users/myname/Documents/test2.txt', '/Users/myname/Documents/test3.txt']
答案 0 :(得分:2)
old_list = [x.strip() for x in old_list]
old_list
是您要从中删除\ n的列表。
或者,如果您想让内容更具可读性:
for x in range(len(old_list)):
old_list[x] = old_list[x].strip()
做同样的事情,没有列表理解。
strip()
方法去除了所有空白,包括\n
。
但是如果您不满意从开始和结束处删除空格的想法,则可以执行以下操作:
old_list = [x.replace("\n", "") for x in old_list]
或
for x in range(len(old_list)):
old_list[x] = old_list[x].replace("\n", "")
答案 1 :(得分:0)
使用:
[i.strip() for i in lines]
以防万一您不介意丢失行首和末尾的空格和制表符。
答案 2 :(得分:0)
尝试一下此代码:
lst = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
for n, element in enumerate(lst):
element = element.replace('\n', '')
lst[n] = element
print(lst)
答案 3 :(得分:0)
进行剥离,但请记住结果不会修改原始列表,因此如果需要,您将需要重新分配它:
a = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
a = [path.strip() for path in a]
print a
答案 4 :(得分:0)
您可以读取整个文件并使用str.splitlines分割行:
temp = file.read()。splitlines()
如果您仍然有问题,请转到此问题,我从
那里获得了答案。How to read a file without newlines? 12年9月8日在11:57回答Bakuriu
答案 5 :(得分:0)
有很多方法可以达到目标。
方法1:使用 split()方法
l = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
result = [i.split('\n')[0] for i in l]
print(result) # ['/Users/myname/Documents/test1.txt', '/Users/myname/Documents/test2.txt', '/Users/myname/Documents/test3.txt']
方法2:使用 strip()方法删除开头和结尾的空格
l = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
result = [i.strip() for i in l]
print(result) # ['/Users/myname/Documents/test1.txt', '/Users/myname/Documents/test2.txt', '/Users/myname/Documents/test3.txt']
方法3:使用 rstrip()方法删除尾随空格
l = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
result = [i.rstrip() for i in l]
print(result) # ['/Users/myname/Documents/test1.txt', '/Users/myname/Documents/test2.txt', '/Users/myname/Documents/test3.txt']
方法4::使用方法替换
l = ['/Users/myname/Documents/test1.txt\n', '/Users/myname/Documents/test2.txt\n', '/Users/myname/Documents/test3.txt\n']
result = [i.replace('\n', '') for i in l]
print(result) # ['/Users/myname/Documents/test1.txt', '/Users/myname/Documents/test2.txt', '/Users/myname/Documents/test3.txt']
答案 6 :(得分:0)
这是使用lambda的另一种方法:
cleannewline = lambda somelist : map(lambda element: element.strip(), somelist)
然后您可以将其称为:
cleannewline(yourlist)