簡體   English   中英

如何使用子字符串python查找特定字符串

[英]how to find specific string with a substring python

我有與此人類似的問題: 在字符串中查找子字符串的位置

區別在於我不知道我的“ mystr”是什么。 我知道我的子字符串,但輸入文件中的字符串可以是任意數量的隨機單詞,但是我知道其中一個單詞包含子字符串cola。

例如一個csv文件: fanta,coca_cola,sprite (任意順序)。

如果我的子字符串是“可樂”,那么我該如何編寫一個如下代碼:

mystr.find('cola')

要么

match = re.search(r"[^a-zA-Z](cola)[^a-zA-Z]", mystr)

要么

if "cola" in mystr

當我不知道我的“ mystr”是什么時?

這是我的代碼:

import csv

with open('first.csv', 'rb') as fp_in, open('second.csv', 'wb') as fp_out:
        reader = csv.DictReader(fp_in)
        rows = [row for row in reader]
        writer = csv.writer(fp_out, delimiter = ',')

        writer.writerow(["new_cola"])

        def headers1(name):
            if "cola" in name:
                    return row.get("cola")


        for row in rows:
                writer.writerow([headers1("cola")])

和first.csv:

fanta,cocacola,banana
0,1,0
1,2,1                      

所以它打印出來

new_cola
""
""

什么時候應該打印出來

new_cola
1
2

這是一個工作示例:

import csv

with open("first.csv", "rb") as fp_in, open("second.csv", "wb") as fp_out:
        reader = csv.DictReader(fp_in)
        writer = csv.writer(fp_out, delimiter = ",")

        writer.writerow(["new_cola"])

        def filter_cola(row):
            for k,v in row.iteritems():
                if "cola" in k:
                    yield v

        for row in reader:
            writer.writerow(list(filter_cola(row)))

筆記:

  • rows = [row for row in reader]是不必要且效率低下的(在這里,您將生成器轉換為消耗大量內存來存儲大量數據的列表)
  • 而不是return row.get("cola")意思是return row.get(name)
  • 在語句return row.get("cola")您可以訪問當前作用域之外的變量
  • 您還可以使用unix工具剪切 例如:

     cut -d "," -f 2 < first.csv > second.csv 

暫無
暫無

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

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