2015-02-06 134 views
0

我運行此程序:刪除引號

f = open("animals.txt", "r") 
g = f.read() 
g1 = g.split(',') #turning the file into list 
print g1 

而且我想這個出來:

['ELDEN', 'DORSEY', 'DARELL', 'BRODERICK', 'ALONSO'] 

相反,我得到這個:

['"ELDEN"', '"DORSEY"', '"DARELL"', '"BRODERICK"', '"ALONSO"'] 

有誰知道如何刪除內部引號

+0

此外,當您完成該操作時,您目前沒有關閉文件。您需要在最後執行'f.close()'或使用[with-statement]打開文件(https://docs.python.org/3/reference/compound_stmts.html#the-with-statement)讓它自動關閉。 – iCodez 2015-02-06 23:33:12

回答

0

嘗試一個列表理解,它允許您有效地將列表重新分配到刪除引號的等效列表中。

g1 = [i.replace('"', '') for i in g1] # remove quote from each element 
3

您可以使用易於剝離引號字符list comprehensionstr.strip

f = open("animals.txt", "r") 
g = f.read() 
g1 = [x.strip('"') for x in g.split(',')] 
print g1 

演示:

>>> lst = ['"ELDEN"', '"DORSEY"', '"DARELL"', '"BRODERICK"', '"ALONSO"'] 
>>> [x.strip('"') for x in lst] 
['ELDEN', 'DORSEY', 'DARELL', 'BRODERICK', 'ALONSO'] 
>>> 
0

也許我們應該回到源。

顯然你的文件包含文本"ELDEN", "DORSEY", "DARELL", "BRODERICK", "ALONSO"(etc)。我們可以委託解析:

import ast 

with open("animals.txt") as inf: 
    g1 = ast.literal_eval("[" + inf.read() + "]") 
+0

這是有點可愛。 – kindall 2015-02-06 23:57:11

1

什麼是創建您的文件在第一個地方?看起來好像您有一種CSV,其中所有元素或至少所有字符串元素都被引號包圍。因此,你必須至少有幾條路從移動「上游」的引號標記去除大多數這裏的其他答案均提示:

  1. 使用csv module
import csv 
with open('animals.txt', 'r') as f: 
    g = csv.reader(f) 
    g1 = g.next() 
  • 包括在你split()引號,以及第一砍掉前緣和後引號:
  • with open('animals.txt', 'r') as f: 
        g = f.read() 
        g1 = g[1:-1].split('","') 
    

    的第一個選項可能會有些比你在找什麼「重量級」,但它更強大的(但仍不能重)。請注意,第二個選項假定您的文件末尾沒有尾隨換行符。如果確實如此,則必須相應調整。