![](/img/trans.png)
[英]Convert a list of tuples (from itertools) into a list of words in a text file, Python
[英]Convert text file to list of tuples
我無法將文本文件轉換為元組列表。 文本文件將采用以下格式,文件名為 data.txt
埃文斯·李 喜劇演員 25,000
史密斯威爾 演員 50,000
麥克李喜劇演員 30,000
通過使用以下代碼,我設法部分實現了我的目標
load_file = open("data.txt", "r")
data = infile.read()
load_file.close()
data = tuple(item for item in data.split(' ') if item.strip())
print (data)
但是,這並沒有達到我想要的效果,它會產生以下 output
('Evans', 'Lee', 'Comedian', '25,000\nSmith', 'Will', 'Actor', '50,000\nMack', 'Lee', 'Comedian', '30,000')
這只是一個包含換行符的大長元組,有沒有辦法讓data.txt文件中的每一行都是它自己的元組,給我一個元組列表並去掉換行符?
如果你read()
整個文件成一個大字符串,你必須先splitlines()
:
data = [tuple(line.split()) for line in data.splitlines()]
更好:不要將文件作為一個大字符串讀取,而是直接迭代文件中的行:
with open("data.txt") as load_file:
data = [tuple(line.split()) for line in load_file]
更好的是:使用csv
讀取數據; 這也將允許您例如將包含空格的名稱或職位放在引號中:
import csv
with open("data.txt") as load_file:
reader = csv.reader(load_file, delimiter=" ")
data = [tuple(row) for row in reader]
你很親密。 infile.read()
將整個文件作為字符串提供給您,其中包括換行符 ( \n
)。 您可以改用.readlines()
。
with open('data.txt') as f:
lines = f.readlines()
return tuple(tuple(line.split()) for line in lines)
這應該給
(
("Evans", "Lee", "Comedian", "25,000"),
("Smith", "Will", "Actor", "50,000"),
...
)
您需要readlines()
,它將輸入文件中的每一行讀入列表中的單獨項目:
load_file = open("data.txt", "r")
raw = infile.readlines()
data = [line.strip() for line in raw]
load_file.close()
print (data)
請注意,這將刪除每行末尾的所有空格,而不僅僅是換行符。 應該沒問題吧,我猜。
這里的問題是如何解析你的文件。 通常,文件是逗號分隔值,我們有一個字符來分割字段https://pt.wikipedia.org/wiki/Comma-separated_values或者我們有一個文件,其中列具有固定長度https://en .wikipedia.org/wiki/Flat-file_database
在您的情況下,我會使用正則表達式來解析您的行。
嘗試這個:
import re
with open("data.txt", "r") as infile:
for line in infile:
groups = re.search("^(.+) (\d.*)", line)
name = groups.group(1)
value = groups.group(2)
print("Name: %s Value:%s" % (name, value))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.