Как заменить строку в Excel и проверить всю строку ячейки? - PullRequest
1 голос
/ 06 ноября 2019

Я хочу использовать Python для замены строк в моем файле CSV или Excel. Мой код работает, но у меня проблема в том, что если у меня есть что-то вроде:

Заменить: «rechts» на «right» и «rechts schiebend» на «right pushing»

Что заменить не можетне ищет значение всей ячейки и переводит каждый «rechts» в «right», затем ищет «rechts schiebend» и больше не может его найти.

Есть ли способ, как в Excel,искать всю строку ячейки?

Вот код, который я использовал до сих пор:

import csv

reps = {
    'rechts' : 'right',
    'rechts schiebend' : 'right pushing'}

def replace_all(text, dic):
    for i, j in reps.items():
        text = text.replace(i, j)
    return text

with open('Test.csv','r') as f:
    text=f.read()
    text=replace_all(text,reps)

with open('Test_en.csv','w') as w:
    w.write(text)

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Вы можете преобразовать CSV в pandas.DataFrame и использовать applymap() для преобразования всех значений.

import pandas as pd

test = pd.read_csv("Test.csv")

reps = {
    'rechts': 'right',
    'rechts schiebend': 'right pushing'
}
translator = lambda x: reps[x] if x in reps else x
modified_test = test.applymap(translator)
modified_test.to_csv('Test_en.csv', index=None) # save result
0 голосов
/ 06 ноября 2019

Вы можете попробовать это решение:

import re
csv = 'rechts,rechts schiebend,schiebend,schiebend rechts'

reps = {
    'rechts' : 'right',
    'rechts schiebend' : 'right pushing'
}

cells = csv.split(',')

for idx, cell in enumerate(cells):
    if cell in reps:
        cells[idx] = re.sub(re.compile('^' + cell + '$'), reps[cell], cell)

csv = ','.join(cells)

print(csv)

Это должно обновить CSV до

right,right pushing,schiebend,schiebend rechts

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