如何从字符串列表中删除“ \ n”

时间:2019-11-22 15:00:37

标签: python string list

我有一个从输出以下内容的文本文件中读取的列表:

['/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']

7 个答案:

答案 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)