我想使用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
例如,在下图中:
公司 - > Apple - > iPhone - > iPhone4.0
公司 - >三星 - > Gtablet - > SamTab7.0
...
公司 - >索尼 - > Xperia - > Xperia4K
... 链接到数据:https://docs.google.com/spreadsheets/d/11puxvQH6z6D3xiKybHEVbBpMp_Zv87LjlTd_ZIxYNw8/edit?usp=sharing
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
答案 0 :(得分:0)
这似乎是一个家庭作业问题,但我发现它很有趣,所以这就是我所做的:
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->