亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Python 導出列表 .txt 轉換為常規 Python 列表

將 Python 導出列表 .txt 轉換為常規 Python 列表

陪伴而非守候 2021-12-17 15:53:51
我正在嘗試將 .txt 文件轉換為常規 Python 列表。我之前也做過這個,但是之前的情況涉及到手動構建的文件。我目前正在嘗試處理由另一個 Python 腳本組成的 .txt 文件,該腳本將列表寫入所述 .txt 文件。我不確定為什么 Python 認為這些格式不同這就是我的意思:第一個 .txt 看起來像:(我們稱之為x.txt)I like dogsGo home This is the greatest Ice Cream ever現在,如果我這樣做:f = open('x.txt', encoding = "utf8")z = f.readlines()print(z)我得到['I like dogs','Go home','This is the greatest Ice Cream ever']這正是我想要的^我當前的 .txt 文件如下所示:(我們稱之為 y.txt)['I like dogs','Go home','This is the greatest Ice Cream ever']現在,如果我這樣做:f = open('y.txt', encoding = "utf8")z = f.readlines()print(z)我得到一個奇怪的輸出,看起來像:['[\'I like dogs. \', \'Go home\', \'This is the greatest Ice Cream ever\',]]我以為雙括號只存在于 Pandas 中?我哪里出錯了?如何獲得常規列表格式輸出。注意:為了提供一些上下文,我試圖將此列表輸入到一些文本清理腳本中。當我嘗試將第二個輸出輸入其中時,我沒有收到錯誤消息,但它將字符串列表轉換為列表中的一個長字符串,例如:['IlikedogsGohomeThisisthegreatestIceCreamever']
查看完整描述

3 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

如果您的'y.txt'文件包含['I like dogs', 'Go home', 'This is the greatest Ice Cream ever']沒有字符串格式的內容,并且在閱讀文本行后您希望將列表分配給某個變量,請嘗試以下操作:


from ast import literal_eval

with open('y.txt', 'r', encoding = 'utf-8') as f:

    b = f.readlines()

    print(b)    # OUTPUT - ["['I like dogs','Go home','This is the greatest Ice Cream ever']"]

    l = literal_eval(b[0])

    print(l)    # OUTPUT - ['I like dogs', 'Go home', 'This is the greatest Ice Cream ever']

使用上述代碼有一個限制——只有當文本文件包含單個列表時,這才有效。如果里面包含多個列表'y.txt',試試這個:


from ast import literal_eval

with open('y.txt', 'r', encoding = 'utf-8') as f:

    b = f.readlines()

    l = [literal_eval(k.strip()) for k in b]


查看完整回答
反對 回復 2021-12-17
?
米脂

TA貢獻1836條經驗 獲得超3個贊

列表可以直接從y.txtas中提取


>>> with open('y.txt', 'r') as file:

...     line = file.readlines()[0].split("'")[1::2]

... 

>>> line

['I like dogs', 'Go home', 'This is the greatest Ice Cream ever']


查看完整回答
反對 回復 2021-12-17
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

如果只有一行包含您的列表作為字符串并且它是第一行,我建議您試試這個


fil = open('y.txt', 'r', encoding="utf-8")

lis = eval(fil.readlines()[0])

現在你應該可以使用 list - lis


讓我知道這是否有效。


查看完整回答
反對 回復 2021-12-17
  • 3 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號