一个txt文本,前面是id:后面跟着[a,b],[c,d],希望输入成数组[('id',[('a'.'b'),('c','d')])的形式
时间: 2023-10-23 19:37:22 浏览: 72
把txt文本读取出来,然后按照以下方式进行处理:
1. 使用splitlines()方法将文本分行。
2. 遍历每一行,使用split(':')方法将id和后面的内容分开。
3. 将后面的内容使用正则表达式提取出[a,b],[c,d]中的a,b,c,d。
4. 将a,b,c,d组成一个元组,然后将这个元组加入到一个列表中。
5. 将id和列表组成一个元组,然后将这个元组加入到一个新的列表中。
6. 返回这个新的列表。
下面是代码示例:
import re
def process_txt(txt):
result = []
for line in txt.splitlines():
id, content = line.split(':')
matches = re.findall(r'\[(\w+),(\w+)\]', content)
tuples = [(a, b) for a, b in matches]
result.append((id, tuples))
return result
# 测试
txt = """
id1:[a1,b1],[c1,d1]
id2:[a2,b2],[c2,d2]
"""
print(process_txt(txt)) # [('id1', [('a1', 'b1'), ('c1', 'd1')]), ('id2', [('a2', 'b2'), ('c2', 'd2')])]
相关问题
python读取一个txt文本,前面是id:后面跟着[a,b],[c,d],希望输入成数组[('id',[('a'.'b'),('c','d')])的形式
可以使用正则表达式来匹配文本中的id和[a,b],[c,d],然后将其转换成需要的格式。
以下是一个示例代码:
```python
import re
# 读取文本文件
with open('data.txt', 'r') as f:
text = f.read()
# 使用正则表达式匹配id和[a,b],[c,d]
pattern = r'id:(\w+)\s+\[([\w\s,]+)\]\s+\[([\w\s,]+)\]'
matches = re.findall(pattern, text)
# 将匹配结果转换成需要的格式
result = []
for match in matches:
id = match[0]
a_b = match[1].split(',')
c_d = match[2].split(',')
result.append((id, [(a_b[i], a_b[i+1]) for i in range(0, len(a_b), 2)] + [(c_d[i], c_d[i+1]) for i in range(0, len(c_d), 2)]))
print(result)
```
假设文本文件data.txt中的内容如下:
```
id:123 [a,b] [c,d]
id:456 [e,f] [g,h]
```
运行上述代码后,输出结果为:
```
[('123', [('a', 'b'), ('c', 'd')]), ('456', [('e', 'f'), ('g', 'h')])]
```
即为所需的格式。
python读取一个txt文本,前面是17890:后面跟着[a,b],[c,d],希望输入成数组[('id',[('a'.'b'),('c','d')])的形式
假设txt文本内容如下:
```
17890:[a,b],[c,d]
```
可以使用以下代码读取并转换为所需的数组形式:
```python
with open('text.txt', 'r') as f:
line = f.readline().strip() # 读取一行并去除首尾空格
# 解析id和数组值
id, values = line.split(':')
# 解析数组值并转换为列表
values_list = values.strip('[]').split(',')
# 构建最终数组
result = [(id, [(values_list[0], values_list[1]), (values_list[2], values_list[3])])]
print(result)
```
输出结果为:
```
[('17890', [('a', 'b'), ('c', 'd')])]
```
阅读全文