簡體   English   中英

如何使用Python 2.7從字符串列表中替換字符串的一部分

[英]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.

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