[英]Python - How to create sublists from list of strings based on part of the string?
[英]How to replace part of a string from a list of strings using Python 2.7
我有一個從csv文件讀取的唯一文件路徑的列表,我想通過多種方法來過濾此列表。 其中之一是排除包含特定單詞的路徑。 我已經創建了一個單詞列表,但是我不確定如何使用它來過濾路徑。 以下代碼不起作用。
with open("C:\MXD\dataSources.csv") as csvfile:
pathList = csvfile.readlines()
vendMastList = ["Vendor", "vendor", "master", "Master"]
for pth in pathList:
for vendMast in vendMastList:
if vendMast not in pth:
print pth
我認為您需要做的就是替換第二個for循環:
for path in pathList:
if not any(name in path
for name in vendMastList):
print(path)
這將檢查列表中的any
單詞是否出現在路徑中:如果沒有出現,則將其打印出來
有了一個簡短的清單,您可以檢查每個清單。
for path in pathList:
if not 'Vendor' in path and not 'vendor' in path and \
not 'Master' in path and not 'Master' in path:
print path
如果您的列表較長,那么我將遍歷每個作品的列表,並使用pop刪除包含該單詞的所有路徑。 pop的文檔list.pop(i) https://docs.python.org/3.1/tutorial/datastructures.html
由於您需要考慮路徑中不包含任何單詞,因此使用標記來記錄路徑中是否包含某個單詞是最直觀的方法。 修理它:
with open("C:\MXD\dataSources.csv") as csvfile:
pathList = csvfile.readlines()
vendMastList = ["Vendor", "vendor", "master", "Master"]
for pth in pathList:
contained = False
for vendMast in vendMastList:
if vendMast in pth:
contained = True
break
if not contained:
print pth
如果沒有csv文件樣本,這很難衡量,也許下次再添加。 :)我也不確定在讀取文本文件(即readlines()
或從library csv
讀取實際的csv文件csv.reader(filename, delimiter="")
之間是否混淆csv.reader(filename, delimiter="")
,即import csv
將數據讀取為列和行。 第一行將組成列,其余的行。
如果您希望像readlines()
一樣將其讀取為文本文件,則需要執行以下操作:
with open("C:\MXD\dataSources.csv") as csvfile:
pathList = csvfile.read().splitlines() # removes newlines "\n" characters
vendMastList = ["Vendor", "vendor", "master", "Master"]
for line in pathList:
# print(line) # to see what is happening
result = line.split(",")
# print(result) # etc
for i in range(len(result)):
for j in range(len(vendMastList)):
if result[i] != vendMastList[j]:
new_result = result
print(new_result)
csvfile.close # Don't forget to close it :)
如果不確定情況如何,可以在其中插入一條print
線,以查看循環的每個階段的輸出等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.