1

Мне приходится ежедневно загружать базы данных мультимедийных файлов и изменять метаданные из файла CSV, чтобы уникальный числовой префикс в столбце B добавлялся в качестве суффикса к ячейкам в столбце C.

Есть ли способ, которым я могу сделать это за один раз для всех ячеек, которые еще не содержат суффикс в именах ячеек столбца C?

На данный момент единственный способ, которым я могу это сделать, это добавить _01 в конец первой ячейки (начиная с _01) и перетащить ячейку вниз, чтобы она автоматически заполняла остальные числа в порядке возрастания (как видно на скриншоте ниже).

Я попытался открыть файл в Notepad++, чтобы посмотреть, есть ли способ сделать это там, но, к сожалению, он не вводит данные в виде столбцов, а вместо этого показывает весь текст, разделенный запятыми, в типичном стиле блокнота. Мне нужно сохранить файл в формате .csv, чтобы я мог повторно импортировать измененные данные на наш медиа-сервер.

Кто- нибудь знает, как взять XX_ из столбца B и добавить его как _XX в ячейки, в которых его нет в столбце C? Я готов попробовать это в любом программном обеспечении, кроме Excel. Я использовал notepad++ для такого рода вещей в прошлом, но никогда не использовал csv-файлы, и я не уверен, будет ли документ после этого правильно отформатирован.

Колонка Б:

16_9S0816YE556_GOPR0091_0S01
17_9S0816YE556_GOPR0091_1S01
18_9S0816YE556_GOPR0091_2S01
19_9S0816YE556_GOPR0091_3S01
01_9S0803SD006MN_C0001S01
02_9S0803SD006MN_C0002S01
03_9S0813ED095MN_8R7A3425S01
04_9S0813SD007MN_C0001S01

Колонка C:

9S0815GP174_16
9S0815GP174_17
9S0815GP174_18
9S0815GP174_19
9S0816GP175
9S0816GP175
9S0816GP175
9S0816GP175

Желаемый конечный результат для столбца C (без влияния на первые четыре ячейки):

9S0815GP174_16
9S0815GP174_17
9S0815GP174_18
9S0815GP174_19
9S0816GP175_01
9S0816GP175_02
9S0816GP175_03
9S0816GP175_04

Благодарю.

2 ответа2

1

С Notepad++ вы можете сделать:

  • Ctrl+H
  • Найти что: ^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),
  • Заменить на: $1_$2,
  • проверить обернуть
  • проверьте регулярное выражение
  • Заменить все

Объяснение:

^           : beginning of line
(           : start group 1
  [^,]*     : 0 or more non comma character
  ,         : 1 comma
  (\d\d)    : group 2, 2 digits
  _         : underscore
  [^,]*     : 0 or more non comma character
  ,         : 1 comma
  [^,]*     : 0 or more non comma character
)           : end group 1
(?<!        : negative lookbehind, make sure we don't have before the comma
    _\d\d   : underscore and 2 digits
)           : end lookbehind
,           : a comma

Результат для данного примера:

col_A,16_9S0816YE556_GOPR0091_0S01,9S0815GP174_16,col_D
col_A,17_9S0816YE556_GOPR0091_1S01,9S0815GP174_17,col_D
col_A,18_9S0816YE556_GOPR0091_2S01,9S0815GP174_18,col_D
col_A,19_9S0816YE556_GOPR0091_3S01,9S0815GP174_19,col_D
col_A,01_9S0803SD006MN_C0001S01,9S0816GP175_01,col_D
col_A,02_9S0803SD006MN_C0002S01,9S0816GP175_02,col_D
col_A,03_9S0813ED095MN_8R7A3425S01,9S0816GP175_03,col_D
col_A,04_9S0813SD007MN_C0001S01,9S0816GP175_04,col_D
0

Если у вас Excel 2016, используйте мощные инструменты Microsoft Get & Transform для получения новой таблицы с правильным столбцом.
(Для Excel 2010-2013 используйте бесплатную надстройку MS Power Query for Excel.)

В конечном итоге вы можете напрямую подключиться к источнику (CSV-файл, база данных, файл Excel и т.д.) И выполнить преобразование, подобное этому (я сохранил использованные столбцы, которые можно удалить дополнительным шагом перед загрузкой в простынь):

Здесь M-код, сгенерированный пользовательским интерфейсом.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}}),
    #"Add Col: Col2 Text before delimiter" = Table.AddColumn(#"Changed Type", "Col2 TextBeforeDelimiter", each Text.BeforeDelimiter([Column2], "_"), type text),
    #"Add Col: Col3 Text after delimiter" = Table.AddColumn(#"Add Col: Col2 Text before delimiter", "Col3 TextAfterDelimiter", each Text.AfterDelimiter([Column3], "_"), type text),
    #"Added Custom" = Table.AddColumn(#"Add Col: Col3 Text after delimiter", "Check Number", each [Col2 TextBeforeDelimiter] = [Col3 TextAfterDelimiter]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Col3 Transformed", each if [Check Number] = true then [Column3] else [Column3] & "_" & [Col2 TextBeforeDelimiter])
in
    #"Added Custom1"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .