преобразовать список в строку, а затем вернуть его в список [Python] - PullRequest
0 голосов
/ 16 июля 2011

У меня проблема, речь идет о преобразовании из List в String для его редактирования

У меня есть текстовое содержимое файла с этим именем

Roby
Bucky
johan

Тогда я хочу добавить рядом с каждым OK:1

так что я делаю этот код

Names='a.txt' # here is the names
O=open(Names,'r') # we open the file content the names
iamList=O.readlines() # read the name it would be List !
imSting=str(iamList) # convert it to string
Edit=imSting.replace(r"\n","Ok:1") # Editing by adding
noname=Edit
noname=noname.split()
for PT in noname:
    PT.strip('[')
    print PT

и я получил этот результат ['RobyOk:1', 'BuckyOk:1', 'johan'] я хочу удалить эти вещи [ , ' я пробовал strip и replace('[','')

есть идеи?

Ответы [ 4 ]

2 голосов
/ 16 июля 2011

Вам не нужно преобразовывать его в строку, чтобы добавить Ok:1 в конце каждого элемента.

Вы можете сделать это с помощью списка , например:

iamNewList = [e.rstrip() + 'Ok:1' for e in iamList]

В качестве альтернативы вы можете сделать следующее:

iamNewList = []
for e in iamList:
    iamNewList.append(e.rstrip() + 'Ok:1')

Примечание: rstrip удаляет все пробелы, такие как переводы строк, сконец строки, который я предполагаю, это то, что вы хотите.

1 голос
/ 16 июля 2011

решение:

f = open('a.txt')
names = [line.strip() + 'Ok:1' for line in f.readlines()]
f.close()
for name in names:
    print(name)

Я использовал 'line.strip ()', потому что os.linesep (обычно '\ n') может отличаться от разделения строк, используемого в вашем файле, оставляя каждую строку с \ n. 1006 *

о вашем подходе: Поскольку iamList был списком, представление этого списка было создано str (iamList) уже содержит скобки '[' и запятые ',': они являются частью строкового представления. print('imSting: ' + imSting) покажет это. Таким образом, вы могли бы заменить '\ n' на 'Ok: 1' прямо из вставки и разбиения новая строка в списке над частью ',':

(imSting.replace(r"\n", 'Ok:1')[2:-2] + 'Ok:1').split("', '")

[2:-2] возвращает только символы между ['и'], эффективно удаляя скобки.

Первое решение может быть почти однострочным, его гораздо легче читать, и, следовательно, оно гораздо более «питоническое». Тем не менее, лучше иметь привычку закрывать файл после прочтения.

0 голосов
/ 16 июля 2011

Ваш код не работает. В последней строке нет конца строки, поэтому у вас нет «Ok: 1».

Попробуйте это:

[b.replace("\n","") + "Ok:1" for b in open("C:\\py\\a.txt","r")]

«Расширенная» версия:

newList = []
for b in open("C:\\py\\a.txt","r"):
  newList.append(b.replace("\n","") + "Ok:1")
0 голосов
/ 16 июля 2011

iamList = O.readlines() выдаст вам список.

Вы НЕ хотите конвертировать этот список в строку.Избегайте манипуляции со струнами любой ценой;это плохая практика кодирования. (По этой причине меня также беспокоит причина, по которой вы добавляете 'Ok:1' к каждой строке.)

Вместо этого просто выполните [x+' OKAY!' for x in yourFile.read().splitlines()]

Однако вы должны сказать, почему вы хотите добавить «Ok: 1», потому что, скорее всего, вы идете не так, как надо. Вы должны сказать, что вы на самом деле пытаетесь сделать.

...