Плохой escape / I с pandas str содержит

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

В простом приложении, которое я создаю, пользователь выбирает папку, которая хранится в виде строки. У меня есть df, где в одном из столбцов указаны имена файлов, которые представляют собой полные пути к сохраненным файлам, а также некоторый текст, который мне не нужен. Я хочу выбирать только строки в df, которые имеют тот же путь, что и выбранная папка

df выглядит следующим образом

     File Name
1   D:ThisisafilepathIedited08SMP
2   D:ThisisafilepathIedited09SMP
3   D:ThisisafilepathIedited010SMP
4   "Action on Failure"
5   Total Dil.
6   Max. Daily Dose
7   File Name
8   D:ThisisafilepathIedited11SMP
....
  

Итак, если foldername=r"D:ThisisafilepathIedited"

Я только хочу выбрать строки, в которых имя файла содержит имя папки. Вывод должен быть таким.

     File Name
1   D:ThisisafilepathIedited08SMP
2   D:ThisisafilepathIedited09SMP
3   D:ThisisafilepathIedited010SMP
8   D:ThisisafilepathIedited11SMP
....
  

Однако, когда я пытаюсь

 df=df[df["File Name"].str.contains(foldername)]
  

Я получаю ошибку: error: bad escape I

И по какой-то причине, когда я пытаюсь сравнить только часть foldername, он возвращает false, даже если есть строки, которые его содержат

 df["File Name"].str.contains(foldername[:10])
Out[43]: 
0     False
1     False
2     False
3     False
4     False
5     False
6     False
7     False
8     False
9     False
11    False
23    False
35    False
59    False
60    False
61    False
62    False
63    False
64    False
65    False
66    False
67    False
68    False
70    False
81    False
92    False
Name: File Name, dtype: bool

if foldername[:10] in df.iloc[0,1]:
    print("y")
    
y
  

Комментарии:

1. ` is an escape character. You should use raw string имя_файла=r»D:ThisisafilepathIedited «`

2. @QuangHoang Я делаю, и я получаю ту же ошибку. Но я исправлю опечатку в сообщении, спасибо

Ответ №1:

Я думаю, вам нужно добавить «регулярное выражение = False»

 df=df[df["File Name"].str.contains(foldername, regex=False)]