从字符串列表中删除\ n

时间:2018-01-31 06:38:01

标签: python-3.x list

使用此代码......

def read_restaurants(file):
    file = open('restaurants_small.txt', 'r')
    contents_list = file.readlines()

    for line in contents_list:
      line.strip('\n')

    print (contents_list)
    file.close()

read_restaurants(' restaurants_small.txt&#39)

我得到了这个结果......

[' Georgie Porgie \ n',' 87%\ n',' $$$ \ n','加拿大,酒吧食品\ n',' \ n',' Queen St. Cafe \ n',' 82%\ n',' $ \ n&#39 ;,'马来西亚人,泰国人,' \ n',' Dumplings R Us \ n',' 71%\ n', ' $ \ n','中国\ n',' \ n','墨西哥烧烤\ n',' 85% \ n',' $$ \ n','墨西哥\ n',' \ n',' Deep Fried Everything \ n' ;,' 52%\ n',' $ \ n',' Pub Food \ n']

我想删除\ n ...我已经在这里阅读了很多我认为可能有帮助的答案,但似乎没有什么可以解决这个问题!

我想for ... in ...需要存储为新列表,我需要返回...只是不知道怎么做!

3 个答案:

答案 0 :(得分:1)

更多的pythonic(而且,在我看来,更容易阅读)方法:

def read_restaurants(filename):
    with open(filename) as fh:
        return [line.rstrip() for line in fh]

此外,由于没有人明确澄清这一点:原始方法不起作用的原因是line.strip()返回line的修改版本,但它没有 alter < / em> line

>>> line = 'hello there\n'
>>> print(repr(line))
'hello there\n'
>>> line.strip()
'hello there'
>>> print(repr(line))
'hello there\n']

因此,每当你调用stringVar.strip()时,你需要对输出做一些事情 - 像上面一样构建一个列表,或者将它存储在一个变量中,或类似的东西。

答案 1 :(得分:0)

您可以将常规for循环替换为list comprehension,并且您不必将'\n'作为参数传递,因为strip()方法会删除前导和尾随白色默认情况下为字符:

contents_list = [line.strip() for line in contents_list] 

答案 2 :(得分:0)

你是对的:你需要一个新的清单。此外,您可能希望使用$('.tx-cal-event').toggleClass({"sx-abc-event"}); <div class="nx-cal-event nx-cal-event-month" style="background-color: rgb(182, 232, 198);"></div> <div class="nx-cal-event nx-cal-event-month" style="background-color: rgb(128, 128, 128);"></div> <div class="nx-cal-event nx-cal-event-month" style="background-color: rgb(166, 166, 166);"></div> 代替rstrip()

strip()

然后您可以执行以下操作:

def read_restaurants(file_name):
    file = open(file_name, 'r')
    contents_list = file.readlines()
    file.close()
    new_contents_list = [line.rstrip('\n') for line in contents_list]
    return new_contents_list