如何在Python中拆分记录?
我试图使用split函数在python中分割记录,但无法实现实际结果 下面是我的如何在Python中拆分记录?,python,python-3.x,split,Python,Python 3.x,Split,我试图使用split函数在python中分割记录,但无法实现实际结果 下面是我的.txt文件的内容: 10000 {(10000,200,300,A),(10000,200,300,B)},{(10000,200,300,C),(10000,200,300,D)} 10001 {(10001,200,300,E),(10001,200,300,F)},{(10001,200,300,G),(10001,200,300,H)} 以下是所需的输出: 10000 10000,200,300,A
.txt
文件的内容:
10000 {(10000,200,300,A),(10000,200,300,B)},{(10000,200,300,C),(10000,200,300,D)}
10001 {(10001,200,300,E),(10001,200,300,F)},{(10001,200,300,G),(10001,200,300,H)}
以下是所需的输出:
10000 10000,200,300,A
10000 10000,200,300,B
10000 10000,200,300,C
10000 10000,200,300,D
10001 10001,200,300,E
10001 10001,200,300,F
10001 10001,200,300,G
10001 10001,200,300,H
任何帮助都将不胜感激。这里是获得所需结果的最简单方法,它只需要
re
包中的sub
和findall
方法即可工作
from re import sub, findall
string = """
10000 {(10000,200,300,A),(10000,200,300,B)},{(10000,200,300,C),(10000,200,300,D)}
10001 {(10001,200,300,E),(10001,200,300,F)},{(10001,200,300,G),(10001,200,300,H)}
"""
# our results go here
results = []
# loop through each line in the string
for line in string.split("\n"):
# get rid of leading and trailing whitespace
line = line.strip()
# ignore empty lines
if len(line) > 0:
# get the line's id
id = line.split("{")[0].strip()
# get all values wrapped in parenthesis
for match in findall("(\(.*?\))", string):
# add the string to the results list
results.append("{} {}".format(id, sub(r"\{|\}", "", match)))
# display the results
print(results)
以下是函数形式的相同代码:
from re import sub, findall
def get_records(string):
# our results go here
results = []
# loop through each line in the string
for line in string.split("\n"):
# get rid of leading and trailing whitespace
line = line.strip()
# ignore empty lines
if len(line) > 0:
# get the line's id
id = line.split("{")[0].strip()
# get all values wrapped in parenthesis
for match in findall("(\(.*?\))", string):
# add the string to the results list
results.append("{} {}".format(id, sub(r"\{|\}", "", match)))
# return the results list
return results
然后您将使用该函数,如下所示:
# print the results
print(get_records("""
10000 {(10000,200,300,A),(10000,200,300,B)},{(10000,200,300,C),(10000,200,300,D)}
10001 {(10001,200,300,E),(10001,200,300,F)},{(10001,200,300,G),(10001,200,300,H)}
"""))
祝你好运。听起来你需要先解析文本文件。你想将输出存储在文本文件中吗?我想将其存储在excel文件中。到目前为止你做了哪些尝试?@BeekashMohanty如果答案有效,欢迎你,别忘了用向下箭头下方的绿色勾号将其标记为已接受。如果行:而不是
如果len(line)>0:
。@RoadRunner不只是检查行的存在性/“真实性”?@LogicalBranch是的。如果一行不是空的->真,否则->假。