[英]Split String in Text File to Multiple Rows in Python
我在文本文件中有一個字符串,讀取為一行,但我需要根據分隔符將字符串拆分為多行。 如果可能的話,我想根據分隔此處列出的不同行元素的句點 (.) 來分隔字符串中的元素:
“第 1 行:元素 '{URL1}Decimal':'x' 不是原子類型 'xs:decimal' 的有效值。第 2 行:元素 '{URL2}pos':'y' 不是有效值原子類型“xs:double”。第 3 行:元素“{URL3}pos”:“yz”不是列表類型“{list1}doubleList”的有效值”
這是我當前的腳本,它能夠讀取 .txt 文件並將其轉換為 csv,但不會將每個條目分開到它自己的行中。
import glob
import csv
import os
path = "C:\\Users\\mdl518\\Desktop\\txt_strip\\"
with open(os.path.join(path,"test.txt"), 'r') as infile, open(os.path.join(path,"test.csv"), 'w') as outfile:
stripped = (line.strip() for line in infile)
lines = (line.split(",") for line in stripped if line)
writer = csv.writer(outfile)
writer.writerows(lines)
如果可能的話,我希望能夠只寫入具有多行的 a.txt,但 a.csv 也可以使用 - 非常感謝任何幫助!
使其工作的一種方法:
import glob
import csv
import os
path = "C:\\Users\\mdl518\\Desktop\\txt_strip\\"
with open(os.path.join(path,"test.txt"), 'r') as infile, open(os.path.join(path,"test.csv"), 'w') as outfile:
stripped = (line.strip() for line in infile)
lines = ([sent] for para in (line.split(".") for line in stripped if line) for sent in para)
writer = csv.writer(outfile)
writer.writerows(lines)
解釋如下:
output 是一行,因為最后一行的代碼讀取一個二維數組,並且該二維數組中只有一個實例,即整個段落。 為了可視化,“行”存儲為[[s1,s2,s3]]
,其中 writer.writerows() 將行輸入為[[s1],[s2],[s3]]
可以有兩個改進。
(1) 取句號'.' 作為分隔符。 line.split(".")
(2) 迭代列表推導中的拆分列表。 lines = ([sent] for para in (line.split(".") for line in stripped if line) for sent in para)
str.split() 按分隔符拆分字符串並將實例存儲在列表中。 在您的情況下,它嘗試將列表存儲在列表理解中,使其成為二維數組。 它將您的段落保存到 [[s1,s2,s3]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.