簡體   English   中英

在Python中從文本文件中獲取* list *內容

[英]Fetching *list* contents from a text file in Python

我需要幫助,以便從每行存儲為列表的文件中取回列表。 例如,檢查以下lists.txt文件

["1","Andy Allen","Administrator"]
["2","Bob Benny","Moderator"]
["3","Zed Zen","Member"]

我需要以以下方式訪問和顯示內容

SN : 1
Name : Andy Allen
Position : Administrator

SN : 2
Name : Bob Benny
Position : Moderator

SN : 3
Name : Zed Zen
Position : Member

PS:我知道我可以使用分隔符保存它,並使用具有拆分功能的訪問列表元素保存它……但是,當使用特定的分隔符作為文本內容時,似乎導致該函數無法正常運行。

這種格式僅使用雙引號而不是單引號,類似於JSON(JavaScript對象表示法) 幸運的是,Python 2.6或更高版本隨附的json模塊可以解析JSON。 因此,請閱讀每一行,將其解析為JSON(使用json.loads ),然后將其打印出來。 嘗試這樣的事情:

import json
with open("lists.txt", "r") as infp:
    rows = [json.loads(line) for line in infp]
for sn, name, position in rows:
    print("SN : %s\nName : %s\nPosition : %s\n" % (sn, name, position))

馴服CSV

另一種解決方案是導出以制表符或逗號分隔的值格式,並使用Python的csv模塊讀取它們。 如果(例如)逗號分隔文件中的值包含逗號,請用雙引號( " )引起來:

2,Bob Benny,"Moderator, Graphic Designer"

並且,如果值包含雙引號字符,則將它們加倍並用雙引號引起來。 例如,下一行的最后一個元素的值為"Fossils" Editor

5,Chester from Tilwick,"""Fossils"" Editor"

以分隔格式保存時,電子表格應用程序(例如Excel,LibreOffice Calc或Gnumeric)將為您進行此轉義。 因此, lists.csv將如下所示:

1,Andy Allen,Administrator
2,Bob Benny,"Moderator, Graphic Designer"
3,Zed Zen,Member
5,Chester from Tilwick,"""Fossils"" Editor"

可以類似地解析:

import csv
with open("lists.csv", "r", newline="") as infp:
    # use "excel" for comma-separated or "excel-tab" for tab-separated
    reader = csv.reader(infp, "excel")
    rows = list(reader)
for sn, name, position in rows:
    print("SN : %s\nName : %s\nPosition : %s\n" % (sn, name, position))

(這是針對Python 3的open("lists.txt", "rb")csv模塊的不同之處在於open應該是二進制的: open("lists.txt", "rb") 。)

如何使用grep抓取[]中的所有內容?

暫無
暫無

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

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