簡體   English   中英

如何刪除具有特定字符的列表中的空格

[英]how to remove spaces in a list that has a specific character

如何獲取列表以固定列表中的空格m。

m = ['m, a \n', 'l, n \n', 'c, l\n']
for i in m:
    if (' ') in i:
        i.strip(' ')

我有:

'm, a \n'
'l, n \n'
'c, l\n'

我希望它返回:

['m, a\n', 'l, n\n', 'c, l\n']

strip()方法將從string的末尾去除所有字符。 在您的情況下,strip從字符串的末尾開始,遇到一個'\\ n'字符,然后退出。

似乎不太清楚您要做什么,但我將假設您正在尋找清除字符串的最后一個非空白字符和換行符之間的空白。 如果我錯了糾正我。

有很多方法可以做到這一點,但這可能不是最好的方法,但這是我想出的:

m = ['This, is a string. \n', 'another string!    \n', 'final example\n    ']

m = map(lambda(x): x.rstrip() + '\n' if x[-1] == '\n' else x.rstrip(' '), m)

print(m)

['This, is a string.\n', 'another string!\n', 'final example\n']

在這里,我使用內置的map函數遍歷每個列表元素,並從字符串的結尾(rstrip()代替了同時執行開頭和結尾的strip())中刪除所有空白,並在其中添加新行是原始字符串中的一個。

您的代碼在腳本中不會有用; 您只看到REPL顯示表達式i.strip(' ') 在腳本中,該值將被忽略。

要創建列表,請使用列表理解:

result = [i.strip(' ') for i in m if ' ' in i]

但是請注意, strip僅從兩端刪除請求的字符; 在您的數據中,空格換行符之前 您還需要執行類似刪除換行符的操作,然后放回去:

    result = ["%s\n" % i.strip() for i in m if ' ' in i]

您可以使用正則表達式:

import re
m = ['m, a \n', 'l, n \n', 'c, l\n']
final_m = [re.sub('(?<=[a-zA-Z])\s+(?=\n)', '', i) for i in m]

輸出:

['m, a\n', 'l, n\n', 'c, l\n']

快速又骯臟:

m = [x在m中的x.replace('\\ n','\\ n')]

如果您知道'\\ n'之前只有一個空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM