开发者

Python: How do i manipulate the list to get the string starting with '+'?

开发者 https://www.devze.com 2023-01-07 16:43 出处:网络
I am comparing 2 txt files that are ls -R of the etc directory in a linux system. I compared the 2 files using difflib.differ and got this list as my result (i put the dots to keep the list short in h

I am comparing 2 txt files that are ls -R of the etc directory in a linux system. I compared the 2 files using difflib.differ and got this list as my result (i put the dots to keep the list short in here):

result = [' etc:\n', ' ArchiveSEL\n', ' HOSTNAME\n', ' RMCPUser\n', ...,
    ' qcleaner\n', '+ extraFile\n', ' rc.d\n',开发者_运维问答 '+ extraFile2\n', ...,
    ' resolv.conf\n', ' wu-ftpd\n']

I want to be able to take the strings with the '+' sign out to do something else. how do i manipulate the list? in the example above, i want to be able to get this string "extraFile" and "extraFile2".

Thanks to all the people who posted solutions. It helps a lot and I am grateful :)

Here's what I did to get the string I wanted:

newresult = [file[2:-1] for file in result if file.startswith('+')]

to print out the strings:

for i in range (len(newresult)):

print newresult[i]

THANKS~!!! :)


You can use list comprehension:

newlist = [file[1:] for file in result if file.startswith('+')]
#            ^-- gets rid of `+` at the beginning

See the string methods documentation.

And if you want to get rid of the newline character and whitespaces just do:

newlist = [file[1:].strip() for file in result if file.startswith('+')]

Another way would be to use filter(), but you cannot manipulate the string then (just want to mention it for completeness):

newlist = filter(lambda s: s.startswith('+'), result)


>>> [x.strip('+').strip() for x in result if x.startswith("+")]
['extraFile', 'extraFile2']

Improved version with stripping out '+' and whitespace/linebreaks


Try a list comprehension : [x for x in result if x[0]=='+']

0

精彩评论

暂无评论...
验证码 换一张
取 消