Hoe lees je een tekstbestand in een stringvariabele en verwijder je nieuwe regels?

Ik gebruik het volgende codesegment om een ​​bestand in python te lezen:

with open ("data.txt", "r") as myfile:
    data=myfile.readlines()

Invoerbestand is:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

en als ik gegevens afdruk, krijg ik

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Zoals ik zie zijn de gegevens in list-vorm. Hoe maak ik het touwtje? En ook hoe verwijder ik de tekens "\n", "["en "]"eruit?


Antwoord 1, autoriteit 100%

Je zou kunnen gebruiken:

with open('data.txt', 'r') as file:
    data = file.read().replace('\n', '')

Antwoord 2, autoriteit 7%

In Python 3.5 of hoger, met behulp van pathlibje kunt de inhoud van een tekstbestand kopiëren naar een variabele en het bestandop één regel sluiten:

from pathlib import Path
txt = Path('data.txt').read_text()

en dan kun je str.replacegebruiken om de nieuwe regels:

txt = txt.replace('\n', '')

Antwoord 3, autoriteit 6%

Je kunt in één regel uit een bestand lezen:

str = open('very_Important.txt', 'r').read()

Houd er rekening mee dat dit het bestand niet expliciet sluit.

CPython sluit het bestand wanneer het wordt afgesloten als onderdeel van de garbagecollection.

Maar andere python-implementaties niet. Om draagbare code te schrijven, is het beter om withte gebruiken of het bestand expliciet te sluiten. Kort is niet altijd beter. Zie https://stackoverflow.com/a/7396043/362951


Antwoord 4, autoriteit 4%

Om alle regels samen te voegen tot een string en nieuwe regels te verwijderen, gebruik ik normaal gesproken :

with open('t.txt') as f:
  s = " ".join([l.rstrip() for l in f]) 

Antwoord 5, autoriteit 2%

with open("data.txt") as myfile:
    data="".join(line.rstrip() for line in myfile)

join() voegt zich bij een lijst met tekenreeksen en rstrip() zonder argumenten zal witruimte, inclusief nieuwe regels, vanaf het einde van tekenreeksen bijsnijden.


Antwoord 6

Dit kan worden gedaan met de methode read() :

text_as_string = open('Your_Text_File.txt', 'r').read()

Of aangezien de standaardmodus zelf ‘r’ (lees) is, gebruik dus gewoon,

text_as_string = open('Your_Text_File.txt').read()

Antwoord 7

Het verbaast me dat nog niemand splitlines()heeft genoemd.

with open ("data.txt", "r") as myfile:
    data = myfile.read().splitlines()

Variabele datais nu een lijst die er als volgt uitziet wanneer deze wordt afgedrukt:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Let op: er zijn geen nieuwe regels (\n).

Op dat moment klinkt het alsof je de regels terug naar de console wilt afdrukken, wat je kunt bereiken met een for-lus:

for line in data:
    print(line)

Antwoord 8

Ik speel hier al een tijdje mee en gebruik het liefst readin combinatie met rstrip. Zonder rstrip("\n")voegt Python een nieuwe regel toe aan het einde van de string, wat in de meeste gevallen niet erg handig is.

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print(file_content)

Antwoord 9

Het is moeilijk om precies te zeggen wat je zoekt, maar zoiets als dit zou je op weg moeten helpen:

with open ("data.txt", "r") as myfile:
    data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])

Antwoord 10

je kunt dit in één tot twee regels code comprimeren!!!

content = open('filepath','r').read().replace('\n',' ')
print(content)

als uw bestand luidt:

hello how are you?
who are you?
blank blank

python-uitvoer

hello how are you? who are you? blank blank

Antwoord 11

Je kunt ook elke regel strippen en samenvoegen tot een laatste tekenreeks.

myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
    data = data + line.strip();

Dit zou ook prima werken.


Antwoord 12

Dit is een éénregelige, kopieer-plakbare oplossing die ook het bestandsobject sluit:

_ = open('data.txt', 'r'); data = _.read(); _.close()

Antwoord 13

python3: Google ‘lijstbegrip’ als de syntaxis van vierkante haakjes nieuw voor je is.

with open('data.txt') as f:
     lines = [ line.strip('\n') for line in list(f) ]

Antwoord 14

Heb je dit al geprobeerd?

x = "yourfilename.txt"
y = open(x, 'r').read()
print(y)

Antwoord 15

Om regeleinden met Python te verwijderen, kun je de functie replacevan een tekenreeks gebruiken.

Dit voorbeeld verwijdert alle 3 soorten regeleinden:

my_string = open('lala.json').read()
print(my_string)
my_string = my_string.replace("\r","").replace("\n","")
print(my_string)

Voorbeeldbestand is:

{
  "lala": "lulu",
  "foo": "bar"
}

Je kunt het proberen met dit herhalingsscenario:

https://repl.it/repls/AnnualJointHardware

voer hier de afbeeldingsbeschrijving in


Antwoord 16

f = open('data.txt','r')
string = ""
while 1:
    line = f.readline()
    if not line:break
    string += line
f.close()
print(string)

Antwoord 17

Ik heb niet het gevoel dat iemand het [ ] deel van uw vraag heeft behandeld. Wanneer je elke regel in je variabele inleest, omdat er meerdere regels waren voordat je de \n verving door ”, heb je uiteindelijk een lijst gemaakt. Als je een variabele van x hebt en deze uitprint door

x

of print(x)

of str(x)

Je ziet de hele lijst met de haakjes. Als je elk element van de (reeks van soorten)

x[0]
dan laat het de haakjes weg. Als u de functie str() gebruikt, ziet u alleen de gegevens en ook niet de ”.
str(x[0])


Antwoord 18

Misschien kun je dit proberen? Ik gebruik dit in mijn programma’s.

Data= open ('data.txt', 'r')
data = Data.readlines()
for i in range(len(data)):
    data[i] = data[i].strip()+ ' '
data = ''.join(data).strip()

Antwoord 19

Reguliere expressie werkt ook:

import re
with open("depression.txt") as f:
     l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]
print (l)

[‘Ik’, ‘voel’, ‘leeg’, ‘en’, ‘dood’, ‘binnen’]


Antwoord 20

Dit werkt:
Wijzig uw bestand in:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Dan:

file = open("file.txt")
line = file.read()
words = line.split()

Dit creëert een lijst met de naam wordsdie gelijk is aan:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Daarmee is de “\n” verdwenen. Om het gedeelte over de haakjes die je in de weg staan ​​te beantwoorden, doe je dit:

for word in words: # Assuming words is the list above
    print word # Prints each word in file on a different line

Of:

print words[0] + ",", words[1] # Note that the "+" symbol indicates no spaces
#The comma not in parentheses indicates a space

Dit geeft als resultaat:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Antwoord 21

with open(player_name, 'r') as myfile:
 data=myfile.readline()
 list=data.split(" ")
 word=list[0]

Deze code helpt u de eerste regel te lezen en vervolgens kunt u met behulp van de lijst- en splitsoptie het woord van de eerste regel, gescheiden door spatie, converteren om in een lijst op te slaan.

Dan heb je gemakkelijk toegang tot elk woord, of zelfs opslaan in een string.

Je kunt hetzelfde ook doen door een for-lus te gebruiken.


Antwoord 22

file = open("myfile.txt", "r")
lines = file.readlines()
str = ''                                     #string declaration
for i in range(len(lines)):
    str += lines[i].rstrip('\n') + ' '
print str

Antwoord 23

with open('data.txt', 'r') as file:
    data = [line.strip('\n') for line in file.readlines()]
    data = ''.join(data)

Antwoord 24

Probeer het volgende:

with open('data.txt', 'r') as myfile:
    data = myfile.read()
    sentences = data.split('\\n')
    for sentence in sentences:
        print(sentence)

Let op: het verwijdert de \nniet. Het is alleen bedoeld om de tekst te bekijken alsof er geen \n

. is

Other episodes