使用Python从CSV文件生成所有路径

2024-09-22 16:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python制作一个程序,从csv文件生成所有可能的路径。我该怎么办?你知道吗

import pandas as pd
import csv

def dataInCol(fieldName):
    df = pd.read_csv('..\\data.csv',usecols=[fieldName])
    qr = df.values.tolist()
    flattened = [val for sublist in qr for val in sublist]
    return flattened


def makingPaths(dataCol, path = "Companies: "):
    with open('..\\data.csv', "rb") as f:
        reader = csv.DictReader(f)
        headers = reader.fieldnames
    for eachValue in dataCol:
        path = path + str(eachValue)
        if str(eachValue) in headers:
            newCol = dataInCol(str(eachValue))
            makingPaths(newCol)
        break
    return path

例如下图:

公司->;苹果->;iPhone->;iPhone4.0

公司->;三星->;平板电脑->;SamTab7.0

。。。你知道吗

公司->;索尼->;Xperia->;Xperi4K

。。。 链接到数据:https://docs.google.com/spreadsheets/d/11puxvQH6z6D3xiKybHEVbBpMp_Zv87LjlTd_ZIxYNw8/edit?usp=sharing

CSV Data Image

Companies   Apple   Samsung Sony    iPhone  Mac iPad    Galaxy  Notebook    Gtablet Xperia  Xtablet
Apple   iPhone  Galaxy  Xperia  iPhone4.0   Macbook iPadMini    GalaxyS3    NSeries5    SamTab7.0   Xperia4K    XTab6.0
Samsung Macbook Notebook    Xtablet iPhone4.7   MacPro  iPadReg GalaxyS4    NSeries7    SamTab9.0   XperiaUltra XTab8.0
Sony    iPad    Gtablet     iPhone5.5   MacBookPro  iPadPro GalaxyS8    NSeries9        XperiaPrem  XTab10.0

Tags: csvpathinimportgtfordefas
1条回答
网友
1楼 · 发布于 2024-09-22 16:43:32

这似乎是一个家庭作业问题,但我发现它很有趣,所以我做了以下几点:

csvfile = open('data.csv', 'r') #open the csv file
lines = csvfile.readlines() # read the file into a list, one line per element
headings = [cell.strip() for cell in lines[0].split(",")] #keep a clean list of headings
splitlines = []
for line in lines[1:]: # split each row into cells
    splitlines.append(line.split(",")) 
columns = zip(*splitlines); # convert rows to columns

def recursePrint(colval, text): # a recursive function to traverse the columns
        colval = colval.strip()
        if (colval in headings):
            for c in columns[headings.index(colval)]:
                newtext = text + colval + "->"
                recursePrint(c, newtext)
        else:
            print (text + colval)


for x in columns[0]:
    recursePrint(x, "") # run the recursion

以及输出:

Apple->iPhone->iPhone4.0
Apple->iPhone->iPhone4.7
Apple->iPhone->iPhone5.5
Apple->Macbook
Apple->iPad->iPadMini
Apple->iPad->iPadReg
Apple->iPad->iPadPro
Samsung->Galaxy->GalaxyS3
Samsung->Galaxy->GalaxyS4
Samsung->Galaxy->GalaxyS8
Samsung->Notebook->NSeries5
Samsung->Notebook->NSeries7
Samsung->Notebook->NSeries9
Samsung->Gtablet->SamTab7.0
Samsung->Gtablet->SamTab9.0
Samsung->Gtablet->
Sony->Xperia->Xperia4K
Sony->Xperia->XperiaUltra
Sony->Xperia->XperiaPrem
Sony->Xtablet->XTab6.0
Sony->Xtablet->XTab8.0
Sony->Xtablet->XTab10.0
Sony->

相关问题 更多 >