2012-02-21 65 views
0

我有50個值,看起來像這樣的列表:我可以使用Python格式化列表中的文本嗎?

['xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx \n', 'xxxxxx\n', 
' xxxxxx \n', 'xxxxxx \n', 'xxxxxx\n', ...] 

我想打印的清單作爲一個名單,但格式化列表中的文本。我想刪除該單詞前後的空格(在此示例中用xxxxxx替換)以及使用.title()函數。

我已經試過這樣做,但我得到的錯誤:

AttributeError: 'list' object has no attribute 'strip' 

我的理解是錯誤的,但我不知道是否有任何其他的方式來格式化文本列表內。

回答

3

您可以使用

[s.strip().title() for s in my_list] 

格式正確的字符串列表,並與任何你想要的(包括打印)該名單做。

+1

延伸閱讀:http://docs.python.org/tutorial/ datastructures.html#列表理解 – cheeken 2012-02-21 00:43:17

+0

這是完美的!非常感謝:) – emagdnim 2012-02-21 00:47:22

1

問題是字符串是不可變的,你必須創建一個新的字符串並替換列表中的舊字符串。一個簡單的方法是:

a = ['xxxxxx\n', ' xxxxxx \n', 'xxxxxx \n', 'xxxxxx\n', ...] 
a = [x.strip().title() for x in a] 
0
my_list=['xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx \n', 'xxxxxx\n', ' xxxxxx \n', 'xxxxxx \n', 'xxxxxx\n'] 

def format_string_from_list(_str): 
    return _str.strip().title() 

my_new_list=[format_string_from_list(_str) for _str in my_list] 
print my_new_list 

>>> ['Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx', 'Xxxxxx'] 
+1

如果你需要編寫一個外部函數(我真的不認爲你在這種情況下做),但你也可以使用'map(format_string_from_list,my_list)'。我認爲斯文的回答更容易閱讀 – 2012-02-21 00:49:09

0

我的小映射解決方案:

my_list = ['xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx\n', 'xxxxxx \n']#縮短爲簡潔 map(str.title, (map(str.strip, my_list)))

相關問題