簡體   English   中英

去除python中的引號

[英]Removing quotation marks in python

我使用python將txt數據作為列表導入。 結果,我不想要的列表中的項目上有雙引號。 我想刪除它們,但我目前遇到了一些困難。 如果有人能幫助我解決這個問題,我會很高興。

python中的列表具有這種性質:

lst = ["'BEN','JIM'", "'GIN','ANN'"]

我想刪除雙引號,這樣我就可以得到這個列表:

lst = ['BEN','JIM', 'GIN','ANN']

我嘗試了這行代碼,但無濟於事:

lst = ["'BEN','JIM'", "'GIN','ANN'"]
lst = [x.strip("'") for x in lst] 
lst

結果不是我所期望的:

["BEN','JIM", "GIN','ANN"]

再次感謝您的幫助。

您已將項目的顯示表示混淆為等同於其值。 看看你有什么:兩個元素的列表:

["'BEN','JIM'", 
 "'GIN','ANN'"]

您想要獲取包含四個元素的列表:

['BEN',
'JIM',
'GIN',
'ANN']

你不能通過簡單的字符操作來做到這一點:你嘗試的操作不會改變元素的數量。

相反,您必須處理您擁有的元素,將 2-for-1 拆分。 我將保持 Python 技術的低...

new_lst = []
for two_name in lst:
    name_pair = two_name.split(',')
    new_lst.extend(name_pair)

輸出:

["'BEN'", "'JIM'", "'GIN'", "'ANN'"]

現在您可以使用之前的技術刪除單引號,留下您想要的四個 3 個字母的名稱。

這能解決你的問題嗎?

使用replace()字符串函數去掉單引號,然后用逗號分割。

lst = ["'BEN','JIM'", "'GIN','ANN'"]
newlst = []
for pair in lst:
    for name in pair.replace("'", "").split(","):
        newlst.append(name)

數據看起來類似於引用單個單元格的 CSV 文件。 如果它看起來像一只鴨子……請使用閱讀器為您剝離它們。 這是一個嵌套列表理解,首先從列表中構建行,然后將它們展平為單個列表。

>>> import csv
>>> lst = ["'BEN','JIM'", "'GIN','ANN'"]
>>> [cell for row in csv.reader(lst, quotechar="'") for cell in row]
['BEN', 'JIM', 'GIN', 'ANN']
lst = ["'BEN','JIM'", "'GIN','ANN'"]
lst = "".join(lst)
print(lst)

輸出:

'BEN','JIM''GIN','ANN'

你可以用兩行的列表理解來做到這一點:

輸入:

lst = ["'BEN','JIM'", "'GIN','ANN'"]

lst1 = [x.replace("'", "").split(',') for x in lst]
lst2 = [z for y in lst1 for z in y]

或在一行上

lst2 = [z for y in [x.replace("'", "").split(',') for x in lst] for z in y]

輸出:

['BEN', 'JIM', 'GIN', 'ANN']

暫無
暫無

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

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