Як читати файл із розділеними пробілами значеннями в пандах


84

Я намагаюся прочитати файл у пандах. У файлі є значення, розділені пробілом, але з різною кількістю пробілів, які я намагався:

pd.read_csv('file.csv', delimiter=' ')

але це не працює


Відповіді:


141

додати delim_whitespace=Trueаргумент, це швидше, ніж регулярний вираз.


слід додати це та видалити, delimiter=' 'оскільки вони взаємовиключні в останніх версіях.
matanster

2
@matanster: delimiter=' 'дуже крихкий, він говорить, що слід очікувати одного і одного простору. Немає вкладок, рядків новин, декількох пробілів, нерозривних пробілів, їх комбінації тощо delimiter='\s+'- це те, що рекомендує pandas і є більш надійним.
smci

29

ви можете використовувати регулярний вираз як роздільник:

pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")

2
Це допомагає, коли у вас є не просто пробіл як роздільник. У поточних версіях слід додавати, engine = "python"щоб уникнути попередження.
Юрг Мерлін Спаак,

1

Якщо ви не можете отримати аналіз тексту для роботи за прийнятою відповіддю (наприклад, якщо ваш текстовий файл містить неоднорідні рядки), тоді варто спробувати за допомогою бібліотеки CSV Python - ось приклад використання користувацького Dialect :

 import csv

 csv.register_dialect('skip_space', skipinitialspace=True)
 with open(my_file, 'r') as f:
      reader=csv.reader(f , delimiter=' ', dialect='skip_space')
      for item in reader:
          print(item)

Це не правда. Він працює з python 3.8 та пандами. Питання вимагає читання текстового файлу в пандах.
Спас

Ах, вибачте - я оновив свою відповідь, щоб пояснити це.
Pierz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.