如何查询txt文件的行内是否包含这个字符串,如果包含,怎么取出
时间: 2024-01-24 08:01:45 浏览: 67
可以使用Python编程语言来查询txt文件中是否包含某个字符串,并且取出包含该字符串的行。
以下是一个简单的示例代码:
```python
with open("file.txt", "r") as f:
for line in f:
if "search_string" in line:
print(line)
```
这个代码会打开文件"file.txt",并且逐行读取文件。如果某一行包含了字符串"search_string",那么就会打印出这一行的内容。
如果你需要将这些包含搜索字符串的行保存到一个列表中,可以像下面这样修改代码:
```python
matching_lines = []
with open("file.txt", "r") as f:
for line in f:
if "search_string" in line:
matching_lines.append(line)
print(matching_lines)
```
这个代码会将所有包含字符串"search_string"的行保存到一个名为`matching_lines`的列表中,并且最后打印出这个列表的内容。
相关问题
现在有一个文本文件,读取其中每一行,若行内不含有字符"收"则跳过,否则解析这行字符串,其格式为[时间]收 数值 字符
好的,我可以帮助你解析这个文本文件。首先,你需要使用编程语言读取文件中的每一行,然后检查每一行是否包含字符"收"。如果不包含,就跳过这一行。如果包含,就解析这一行字符串,格式为"[时间]收 数值 字符"。
以下是一个使用Python语言的示例代码:
```python
# 打开文件并逐行读取
with open('filename.txt', 'r') as file:
for line in file:
# 检查行是否包含字符"收"
if '收' in line:
# 解析字符串并处理
parts = line.split('收') # 按字符"收"分割字符串
time = parts[0] # 时间部分
value = parts[1] # 数值部分
character = parts[2] # 字符部分
# 处理数据的代码在这里...
else:
# 跳过不包含"收"的行
continue
```
这段代码将逐行读取文件,检查每一行是否包含字符"收"。如果包含,它将按"收"字符将字符串分割成三个部分,并分别获取时间、数值和字符。你可以在代码中添加适当的处理逻辑,例如将数据存储在变量中或执行其他操作。
请注意,你需要将代码中的`filename.txt`替换为实际的文件名,并根据需要调整代码以适应你的具体需求。
写一段python代码,根据输入n完成下列功能:(文件编码格式为utf-8) 本题内如需排序,为保证排序结果测试正确,必须采用直接排序取前k位。 需要取最高前20位时,必须从大到小排序,取前20位数据。不允许从小到大排序,再逆序取数据。 需要取最低前20位时,必须从小到大排序,取前20位数据。不允许从大到小排序,再逆序取数据。 若n为'最低总价',则可以继续输入一个整数k,输出'价格'列最低的前k位,行内数据以空格为间隔。格式见输入输出示例 若n为'最大面积',则可以继续输入一个整数k,输出'面积'列最大的前k位,行内数据以空格为间隔。格式见输入输出示例 若n为'最低单价',输出每平米价格最低的1条房源信息(按公式计算:每平米价格=价格/面积),行内数据以空格为间隔。格式见输入输出示例 若n为'毛坯电梯房单价',输出数据中所有满足'有电梯'并且装修情况为'毛坯'的房屋的每平米平均价格(按公式计算:每平米平均价格=总价格/总面积),格式见输入输出示例 若n为'年份',则可以继续输入字符串s,如果有年份为s的数据,输出年份为s的房屋套数;如果没有匹配数据,输出'无数据',格式见输入输出示例 如果非以上输入,则在小区名中查找是否包含n,并输出所有包含n字段的小区房源信息(按文件数据原有顺序),行内数据以空格为间隔。如果没有数据,则输出'未找到相关数据'
以下是一个可能的实现:
```python
def process_input(n):
data = [] # 存储房源信息的列表
with open('data.txt', encoding='utf-8') as f:
for line in f:
fields = line.strip().split()
info = {
'小区名': fields[0],
'价格': float(fields[1]),
'面积': float(fields[2]),
'有电梯': fields[3] == '是',
'装修情况': fields[4],
'年份': fields[5]
}
data.append(info)
if n == '最低总价':
k = int(input())
sorted_data = sorted(data, key=lambda x: x['价格'])
for i in range(k):
print('{} {:.2f}'.format(sorted_data[i]['小区名'], sorted_data[i]['价格']))
elif n == '最大面积':
k = int(input())
sorted_data = sorted(data, key=lambda x: x['面积'], reverse=True)
for i in range(k):
print('{} {:.2f}'.format(sorted_data[i]['小区名'], sorted_data[i]['面积']))
elif n == '最低单价':
min_price = float('inf')
min_price_info = None
for info in data:
price_per_sqm = info['价格'] / info['面积']
if price_per_sqm < min_price:
min_price = price_per_sqm
min_price_info = info
print('{} {:.2f} {:.2f}'.format(min_price_info['小区名'], min_price_info['价格'], min_price_info['面积']))
elif n == '毛坯电梯房单价':
sum_price = 0
sum_sqm = 0
count = 0
for info in data:
if info['有电梯'] and info['装修情况'] == '毛坯':
sum_price += info['价格']
sum_sqm += info['面积']
count += 1
if count == 0:
print('无数据')
else:
avg_price_per_sqm = sum_price / sum_sqm
print('{:.2f}'.format(avg_price_per_sqm))
elif n == '年份':
s = input()
count = 0
for info in data:
if info['年份'] == s:
count += 1
if count == 0:
print('无数据')
else:
print(count)
else:
found = False
for info in data:
if n in info['小区名']:
print('{} {:.2f} {:.2f} {} {} {}'.format(
info['小区名'], info['价格'], info['面积'],
'是' if info['有电梯'] else '否', info['装修情况'], info['年份']
))
found = True
if not found:
print('未找到相关数据')
```
这个函数使用了一个列表来存储所有房源信息,每个房源信息是一个字典。然后根据输入的n进行相应的处理:
- 如果n为'最低总价',则继续输入k,对房源信息列表按照价格从小到大排序,取前k个房源信息,输出这些房源信息的小区名和价格。
- 如果n为'最大面积',则继续输入k,对房源信息列表按照面积从大到小排序,取前k个房源信息,输出这些房源信息的小区名和面积。
- 如果n为'最低单价',遍历房源信息列表,计算每个房源的每平米价格,然后找到每平米价格最低的房源信息,输出该房源信息的小区名、价格、面积和每平米价格。
- 如果n为'毛坯电梯房单价',遍历房源信息列表,筛选出有电梯且装修情况为毛坯的房源信息,计算这些房源信息的每平米平均价格,输出该平均价格。
- 如果n为'年份',则继续输入字符串s,遍历房源信息列表,找到年份为s的房源信息,输出该年份的房源套数。
- 如果n为其他字符串,则遍历房源信息列表,找到小区名包含n的所有房源信息,输出这些房源信息的小区名、价格、面积、是否有电梯、装修情况和年份。
输出格式按照题目要求进行处理。注意,输出的浮点数需要控制小数点后的位数。
阅读全文
相关推荐













