簡體   English   中英

將列表轉換為字符串,然后將其返回到列表 [Python]

[英]convert list to string then back it to list [ Python]

我有一個問題,它是關於從 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']我想刪除這些東西[, '我嘗試了stripreplace('[','')

有任何想法嗎?

您無需將其轉換為字符串即可在每個元素的末尾添加Ok:1

你可以用這樣的列表理解來做到這一點:

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

或者,為了不那么花哨,你可以這樣做:

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

請注意, rstrip從字符串的末尾刪除所有空格,例如換行符,我認為這是您想要的。

解決方案:

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”。

關於您的方法:因為 iamList 是一個列表,所以由 str(iamList) 創建的該列表的表示已經包含括號“[”和逗號“,”:這些是字符串表示的一部分。 print('imSting: ' + imSting)會顯示這個。 因此,您可以直接從 imSting 將 '\n' 替換為 'Ok:1' 並將新字符串拆分為 ', ' 部分上的列表:

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

[2:-2]僅返回 [' 和 '] 之間的字符,因此有效地刪除了括號。

第一個解決方案幾乎可以是單行的,並且更容易閱讀,因此更“Pythonic”。 但是,養成閱讀后關閉文件的習慣會更好。

iamList = O.readlines()會給你一個列表。

您不想將該列表轉換為字符串。 不惜一切代價避免字符串操作; 這是不好的編碼習慣。 (出於這個原因,我也擔心你在每個字符串中添加'Ok:1'的原因。)

相反,只需執行[x+' OKAY.' for x in yourFile.read().splitlines()] [x+' OKAY.' for x in yourFile.read().splitlines()]

但是,您應該說明為什么要添加“Ok:1”,因為您似乎做錯了事。 你應該說出你真正想做的事情。

您的代碼不起作用。 最后一行末尾沒有換行符,所以你沒有“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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM