Я хочу создать функцию, которая будет использовать эту строку для создания таблицы, заботясь о том, чтобы она работала правильно даже с разрывами, как в примере ниже.
Когда часть данных окружена пары труб, это столбец, и когда он окружен только двумя трубами, это значение каждого столбца
||Name||Age||Address||Phones||size||
|Edwards|22|London|06 45 06 06 06
06 75 85 06 06
07 85 22 15 48|180cm|
(Я поставил \n, потому что не мог вернуться к строке в этой таблице, но они должны быть в одной ячейке)
| Names | Age | Address | Phones | Size |
| --- | --- | --- | --- | --- |
| Edwards | 22 | London | 06 45 06 06 \\n06 06 75 85 06 06\\n 07 85 22 15 48 | 180cm |
вот одна из функций, которые я создал, но она не работает при разрыве значения;
def traiter_colonne_description(df):
dictionnaire_donnees = {}
for index, row in df.iterrows():
texte_modifie = row['Description'].replace('*', '') # Enlever toutes les étoiles
colonnes = []
texte_description = ""
lignes = texte_modifie.strip().split('\n')
dans_section_description = False
compteur_lignes = 0
for ligne in lignes:
ligne = ligne.strip()
dans_section_description, compteur_lignes, texte_description = traiter_ligne_description(
ligne, dans_section_description, compteur_lignes, texte_description )
if '||' in ligne:
noms_colonnes = re.split(r'\|\|', ligne)
colonnes = [col.strip() for col in noms_colonnes if col.strip()]
for col in colonnes:
if col not in dictionnaire_donnees:
dictionnaire_donnees[col] = []
elif '|' in ligne and colonnes:
# Si une ligne contient |, on traite les valeurs
ligne_sans_barre = ligne.replace('|', '').strip() # Enlever le caractère |
# Vérifier si la ligne contient un retour à la ligne
if '\n' in ligne_sans_barre:
# Si c'est le cas, on ne concatène pas, on ajoute une nouvelle entrée
valeurs = re.split(r'\|', ligne)
valeurs = [valeur.strip() for valeur in valeurs if valeur.strip()]
# Assurer que le nombre de colonnes et de valeurs correspond
while len(valeurs) < len(colonnes):
valeurs.append('')
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
else:
# Si la ligne ne contient pas de retour à la ligne, on concatène
if dictionnaire_donnees[colonnes[-1]]:
# Concaténer uniquement si la dernière valeur existe
dictionnaire_donnees[colonnes[-1]][-1] += ' ' + ligne_sans_barre
else:
# Sinon, on traite normalement comme une nouvelle valeur
valeurs = re.split(r'\|', ligne)
valeurs = [valeur.strip() for valeur in valeurs if valeur.strip()]
if len(colonnes) == len(valeurs):
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
else:
# Si le nombre de colonnes et de valeurs ne correspond pas, ajouter des valeurs vides
while len(valeurs) < len(colonnes):
valeurs.append('')
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
dictionnaire_donnees['Description'] = [texte_description.strip()]
return dictionnaire_donnees
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Анализ таблицы, разделенной несколькими каналами, в Python ⇐ Python
Программы на Python
-
Anonymous
1730304083
Anonymous
Я хочу создать функцию, которая будет использовать эту строку для создания таблицы, заботясь о том, чтобы она работала правильно даже с разрывами, как в примере ниже.
Когда часть данных окружена пары труб, это столбец, и когда он окружен только двумя трубами, это значение каждого столбца
||Name||Age||Address||Phones||size||
|Edwards|22|London|06 45 06 06 06
06 75 85 06 06
07 85 22 15 48|180cm|
(Я поставил \n, потому что не мог вернуться к строке в этой таблице, но они должны быть в одной ячейке)
| Names | Age | Address | Phones | Size |
| --- | --- | --- | --- | --- |
| Edwards | 22 | London | 06 45 06 06 \\n06 06 75 85 06 06\\n 07 85 22 15 48 | 180cm |
вот одна из функций, которые я создал, но она не работает при разрыве значения;
def traiter_colonne_description(df):
dictionnaire_donnees = {}
for index, row in df.iterrows():
texte_modifie = row['Description'].replace('*', '') # Enlever toutes les étoiles
colonnes = []
texte_description = ""
lignes = texte_modifie.strip().split('\n')
dans_section_description = False
compteur_lignes = 0
for ligne in lignes:
ligne = ligne.strip()
dans_section_description, compteur_lignes, texte_description = traiter_ligne_description(
ligne, dans_section_description, compteur_lignes, texte_description )
if '||' in ligne:
noms_colonnes = re.split(r'\|\|', ligne)
colonnes = [col.strip() for col in noms_colonnes if col.strip()]
for col in colonnes:
if col not in dictionnaire_donnees:
dictionnaire_donnees[col] = []
elif '|' in ligne and colonnes:
# Si une ligne contient |, on traite les valeurs
ligne_sans_barre = ligne.replace('|', '').strip() # Enlever le caractère |
# Vérifier si la ligne contient un retour à la ligne
if '\n' in ligne_sans_barre:
# Si c'est le cas, on ne concatène pas, on ajoute une nouvelle entrée
valeurs = re.split(r'\|', ligne)
valeurs = [valeur.strip() for valeur in valeurs if valeur.strip()]
# Assurer que le nombre de colonnes et de valeurs correspond
while len(valeurs) < len(colonnes):
valeurs.append('')
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
else:
# Si la ligne ne contient pas de retour à la ligne, on concatène
if dictionnaire_donnees[colonnes[-1]]:
# Concaténer uniquement si la dernière valeur existe
dictionnaire_donnees[colonnes[-1]][-1] += ' ' + ligne_sans_barre
else:
# Sinon, on traite normalement comme une nouvelle valeur
valeurs = re.split(r'\|', ligne)
valeurs = [valeur.strip() for valeur in valeurs if valeur.strip()]
if len(colonnes) == len(valeurs):
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
else:
# Si le nombre de colonnes et de valeurs ne correspond pas, ajouter des valeurs vides
while len(valeurs) < len(colonnes):
valeurs.append('')
for col, valeur in zip(colonnes, valeurs):
dictionnaire_donnees[col].append(valeur)
dictionnaire_donnees['Description'] = [texte_description.strip()]
return dictionnaire_donnees
Подробнее здесь: [url]https://stackoverflow.com/questions/79137617/parsing-a-multi-pipes-delimited-table-in-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия