Найти - Пользователи
Полная версия: Как удалить \n
Начало » Python для новичков » Как удалить \n
1
Scorp_1978
Добрый день подскажите как удалить перенос строки \n .rstrip() не помогает.
[code python]
group_name = input("Введите название чего-то")
url = f"https://api.vk.com/method/wall.get?domain={group_name}&count=20&access_token={token}&v=5.52"
req = requests.get(url)
src = req.json()

with open(f"{group_name}/{group_name}.json", "w", encoding="utf-8") as file:
json.dump(src, file, indent=4, ensure_ascii=False)

with open(f"{group_name}/data.csv", "w", encoding="utf-8" ) as file:
writer = csv.writer(file,delimiter='&')
posts = src["response"]["items"]
for fresh_post_id in posts:
writer.writerow([fresh_post_id["text"].rstrip(),fresh_post_id["id"]]) #вот здесь не убирает перенос
print(fresh_post_id["text"].rstrip(),fresh_post_id["id"]) #и вот здесь тоже не убирает перенос

[/code]
py.user.next
Для чего тут модуль csv? Он и вставляет перевод строки, потому что это обязательно по формату CSV (comma-separated values). Там должно вставляться в любой системе \r\n. Это признак конца записи. И этот признак конца записи изначально сделан так, чтобы открываемый файл при открытии всегда открывался правильно в любой системе, в какой бы системе с какими бы концами строк, свойственных системе, его не открыли. На винде концы строк - \r\n, в лине концы строк - \n, в других системах концы строк \r.
CSV - это формат хранения данных, у которого есть свои правила, а не просто какие-то строчки.
https://en.wikipedia.org/wiki/Comma-separated_values

Если тебе нужно что-то писать в файл, используй print() и строковые методы.

Пример вывода в файл stdout
  
>>> import sys
>>> 
>>> lst = ['a', 'b', 'c', 'd']
>>> 
>>> string = '&'.join(lst)
>>> 
>>> print(string, end='', file=sys.stdout)
a&b&c&d>>>
Scorp_1978
я спарсил страницу с VK, там есть некоторые объявления с переносом строки, а мне надо чтоб одно объявление было равно одной строке в csv для дальнейшего поиска, в данный момент получается что одно объявление а строк несколько

В json есть “\n” который надо убрать
 "text": "Продам... Недорого...\nПисать в личку...",

парсю вот так

posts = src["response"]["items"]
for fresh_post_id in posts:
writer.writerow(fresh_post_id["text"])

может я чегото не понимаю
py.user.next
  
>>> dct = {
...     'text': 'Продам... Недорого...\nПисать в личку...'
... }
>>> 
>>> text = dct['text'].replace('\n', ' ')
>>> text
'Продам... Недорого... Писать в личку...'
>>>

Ну, вот ты delimeter вставил
Scorp_1978
  
writer = csv.writer(file,delimiter='&')
И сразу возникают вопросы. А зачем тебе такой delimiter? В контексте формата CSV это неправильно. Там либо запятая должна быть, либо точка с запятой, либо табуляция. И то истинным CSV-файлом будет файл с запятыми в качестве разделителей полей в строках. Обычно delimiter вообще указывать не надо, потому что там будет запятая. И то там будет запятая только в том случае, если полей в каждой строке больше одного. Если там будет только одно поле в строке, то там даже запятой не будет, просто в конце строки будет стоять последовательность CRLF (\r\n или 0x0d 0x0a).
Scorp_1978
py.user.next, спасибо

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB