Korzystam z następującego segmentu kodu, aby odczytać plik w Pythonie:
with open ("data.txt", "r") as myfile:
data=myfile.readlines()
Plik wejściowy to:
LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
a kiedy drukuję dane, dostaję
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
Jak widzę dane są w list
formie. Jak zrobić to ciąg? A także w jaki sposób mogę usunąć "\n"
, "["
i "]"
postacie z nim?
Odpowiedzi:
Możesz użyć:
źródło
open("data.txt").read().replace('\n','')
zamiast tego jest tylko minus ?rstrip('\n')
usunie tylko nowy wiersz z ostatniej linii,replace('\n','')
usunie go wszędzie (zasadniczo czyniąc cały plik jedną linią)Użyj
read()
, a niereadline()
:źródło
encoding="utf-8"
Możesz odczytać z pliku w jednym wierszu:
Pamiętaj, że nie powoduje to jawnego zamknięcia pliku.
CPython zamknie plik, gdy zostanie zamknięty w ramach odśmiecania.
Ale inne implementacje Pythona nie będą. Aby napisać kod przenośny, lepiej jest użyć
with
lub zamknąć plik jawnie. Krótki nie zawsze jest lepszy. Zobacz https://stackoverflow.com/a/7396043/362951źródło
open
powinien być używany wwith ... as
instrukcji.with ... as
oświadczenie coś wnosi?with ... as
albostr.close()
jak pokazano w odpowiedzi Pedro. Więcej o znaczeniu zamykania plików tutajstr()
przesłałeś cień do wbudowanychAby połączyć wszystkie linie w ciąg i usunąć nowe linie, których zwykle używam:
źródło
W Pythonie 3.5 lub nowszym za pomocą pathlib możesz skopiować zawartość pliku tekstowego do zmiennej i zamknąć plik w jednym wierszu:
a następnie możesz użyć str .replace, aby usunąć nowe linie:
źródło
join () dołącza do listy ciągów, a rstrip () bez argumentów przycina białe znaki, w tym znaki nowej linii, od końca ciągów.
źródło
Można to zrobić za pomocą metody read ():
Lub ponieważ sam tryb domyślny to „r” (odczyt), więc po prostu użyj,
źródło
Przez jakiś czas się tym bawiłem i wolę używać
read
w połączeniu zrstrip
. Bezrstrip("\n")
Python dodaje nową linię na końcu łańcucha, co w większości przypadków nie jest zbyt przydatne.źródło
Trudno powiedzieć dokładnie, czego szukasz, ale coś takiego powinno zacząć:
źródło
data = ' '.join(line.replace('\n', '') for line in myfile)
lub wersja MagerValp.Dziwię się, że nikt
splitlines()
jeszcze o tym nie wspomniał .Zmienna
data
jest teraz listą, która wygląda tak po wydrukowaniu:Uwaga: nie ma nowych linii (
\n
).W tym momencie wygląda to tak, jakbyś chciał wydrukować wiersze z powrotem na konsoli, co można osiągnąć za pomocą pętli for:
źródło
Możesz także rozebrać każdą linię i połączyć w końcowy ciąg.
To również zadziałałoby dobrze.
źródło
możesz skompresować to w jeden do dwóch wierszy kodu !!!
jeśli twój plik czyta:
wyjście Pythona
źródło
Jest to jedno-liniowe rozwiązanie, które można wkleić i skopiować, a także zamyka obiekt pliku:
źródło
źródło
string += line
należy unikać. Niektóre wersje Pythona mogą tutaj uniknąć zachowania O (n ^ 2), ale każda z pozostałych udzielonych odpowiedzi jest lepsza. Nie usunąłeś również nowych linii, o które prosiłeś, więc twój kod jest po prostu bardzo powolnym sposobemstring = f.read()
python3: „Google Comphrension”, jeśli składnia nawiasu kwadratowego jest dla Ciebie nowa.
źródło
Próbowałeś tego?
źródło
Nie sądzę, aby ktokolwiek zajął się [] częścią twojego pytania. Kiedy czytasz każdą linię do swojej zmiennej, ponieważ było wiele linii przed zamianą \ n na „”, skończyłeś tworzeniem listy. Jeśli masz zmienną x i wydrukuj ją przed chwilą
x
lub wydrukuj (x)
lub str (x)
Zobaczysz całą listę w nawiasach. Jeśli wywołasz każdy element (tablicy rodzajów)
x [0] następnie pomija nawiasy klamrowe. Jeśli użyjesz funkcji str (), zobaczysz tylko dane, a nie „”. str (x [0])
źródło
Może mógłbyś tego spróbować? Używam tego w swoich programach.
źródło
Działa również wyrażenie regularne:
źródło
Aby usunąć podział linii za pomocą Pythona, możesz użyć
replace
funkcji ciągu.Ten przykład usuwa wszystkie 3 typy podziałów linii:
Przykładowy plik to:
Możesz spróbować, korzystając z tego scenariusza powtórki:
https://repl.it/repls/AnnualJointHardware
źródło
Działa to: zmień plik na:
Następnie:
Spowoduje to utworzenie listy o nazwie
words
równej:Pozbyłem się „\ n”. Aby odpowiedzieć na część dotyczącą nawiasów przeszkadzających, po prostu wykonaj następujące czynności:
Lub:
Zwraca to:
źródło
Ten kod pomoże ci przeczytać pierwszy wiersz, a następnie za pomocą opcji listy i podziału możesz przekonwertować słowo pierwszego wiersza oddzielone spacją, aby zapisać je na liście.
Następnie możesz łatwo uzyskać dostęp do dowolnego słowa lub nawet zapisać je w ciągu.
Możesz również zrobić to samo, używając pętli for.
źródło
źródło
Spróbuj wykonać następujące czynności:
Uwaga: nie usuwa
\n
. Służy tylko do przeglądania tekstu, jakby go nie było\n
źródło