У вас есть плоский список, чтобы вы могли использовать zip
для группировки пользователей и их комментариев
comments = ['User1',
' ? 3w1 likeReply',
'User2',
' ? 3w1 likeReply',
'User3',
' Looking good! Collab, DM "bruteimpact.fashion 3wReply',
'User4',
' heyyy 3w5 likeReply']
rows = []
for user, text in zip(comments[::2], comments[1::2]):
print(user, text)
#rows.append([user, text])
fields = ["User", "Text"]
filename = "insta_records.csv"
with open(filename, 'w', encoding='utf-8') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(fields)
csvwriter.writerows(rows)
Результат на экране
User1 ? 3w1 likeReply
User2 ? 3w1 likeReply
User3 Looking good! Collab, DM "bruteimpact.fashion 3wReply
User4 heyyy 3w5 likeReply
И в файле
User,Text
User1, ? 3w1 likeReply
User2, ? 3w1 likeReply
User3," Looking good! Collab, DM ""bruteimpact.fashion 3wReply"
User4, heyyy 3w5 likeReply
Чтобы создать другие столбцы, вам необходимо сначала отредактировать комментарии - split()
, replace()
, срез [start:end]
, et c.
rows = []
for user, text in zip(comments[::2], comments[1::2]):
parts = text.rsplit(' ', 2)#[:-1]
parts.insert(0, user)
print(parts)
rows.append(parts)
Результат на экране
['User1', ' ?', '3w1', 'likeReply']
['User2', ' ?', '3w1', 'likeReply']
['User3', ' Looking good! Collab, DM', '"bruteimpact.fashion', '3wReply']
['User4', ' heyyy', '3w5', 'likeReply']
, но в '3wReply'
отсутствует пробел, поэтому он не разделяется правильно, и для правильного разбиения потребуется больше работы.
Кстати: когда у вас есть 3w5
, тогда Вы можете split('w')
получить ['3', '5']
, но в HTML может быть другой текст вместо w
, так что это потребует дополнительной работы. Возможно, используя более сложные правила в BeautifulSoup
, вы могли бы лучше разделить его.