Поиск определенного столбца в файле CSV с Python - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время моя программа - это функции для поиска определенных текстовых значений в импортированном CSV-файле, изменения их на требуемое значение и вывода CSV-файла. проблема, с которой я столкнулся сейчас: есть ли способ ограничить поиск определенными столбцами, чтобы, например, если «hob» найти текст, а мы заменили его на «TEST», поле города hoboken изменится на Testobken. Я довольно новичок в Python, поэтому я прошу прощения, если это легко исправить. Вот мой текущий код.

import csv
ifile = open('testbook.csv', 'rb')
reader = csv.reader(ifile,delimiter='\t')
ofile = open('output.csv', 'wb')
writer = csv.writer(ofile, delimiter='\t')

findlist = ['Australia', 'Mexico', 'United States', 'hob']
replacelist = ['Kangaroo', 'Spider Monkey', 'Eagle', 'Test']

rep = dict(zip(findlist, replacelist))

def findReplace(find, replace):
    s = ifile.read()
    for item, replacement in zip(findlist, replacelist):
        s = s.replace(item, replacement)
   ofile.write(s)

for item in findlist:
    findReplace(item, rep[item])

ifile.close()
ofile.close()

Пример ввода: Австралия Австралия США США Мексика Мексика Хобокен

Пример вывода: Кенгуру кенгуру орел орел Обезьяна-паук Обезьяна-паук

1 Ответ

0 голосов
/ 05 июля 2018

Вам нужно использовать регулярное выражение. \b означает, что вы будете заменять только полные слова. Так что-то вроде:

import re

def findReplace(s, find, replace):
    s = re.sub(r"\b%s\b" % find , replace, s)
    return s


s = "rest and don't get arrested"
s = findReplace(s, "rest", "run")
print(s)

Будет напечатано run and don't get arrested.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...