簡體   English   中英

將文本文件中的字符串拆分為 Python 中的多行

[英]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.

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